12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- using Comal.Classes;
- using InABox.Core;
- using NPOI.HPSF;
- using System.Collections.Generic;
- using System.Linq;
- using PRSStores;
- using System;
- namespace Comal.Stores
- {
- public class PurchaseOrderStore : BaseStore<PurchaseOrder>
- {
- protected override void BeforeSave(PurchaseOrder entity)
- {
- base.BeforeSave(entity);
- Guid? empid = null;
- if (entity.ID == Guid.Empty)
- {
- empid ??= GetEmployeeIDFromUserGuid();
- entity.RaisedBy.ID = empid.Value;
- }
- }
- protected override void AfterSave(PurchaseOrder entity)
- {
- base.AfterSave(entity);
- UpdateTrackingKanban<PurchaseOrderKanban, PurchaseOrder, PurchaseOrderLink>(entity, p =>
- {
- return !p.ClosedDate.IsEmpty()
- ? KanbanStatus.Complete
- : !p.IssuedDate.IsEmpty()
- ? KanbanStatus.Waiting
- : KanbanStatus.Open;
- });
- }
- private Guid[] JobRequisitionItemIDs = System.Array.Empty<Guid>();
-
- private Guid[] GetJobRequisitionIDs(PurchaseOrder entity)
- {
- var jris = Provider.Query(
- new Filter<JobRequisitionItemPurchaseOrderItem>(x => x.PurchaseOrderItem.PurchaseOrderLink.ID).IsEqualTo(entity.ID),
- Columns.None<JobRequisitionItemPurchaseOrderItem>().Add(x => x.JobRequisitionItem.ID))
- .Rows
- .Select(r=>r.Get<JobRequisitionItemPurchaseOrderItem, Guid>(x => x.JobRequisitionItem.ID))
- .Where(x=> x != Guid.Empty)
- .Distinct()
- .ToArray();
- return jris;
- }
-
- protected override void BeforeDelete(PurchaseOrder entity)
- {
- UnlinkTrackingKanban<PurchaseOrderKanban, PurchaseOrder, PurchaseOrderLink>(entity);
- DeleteStockMovements(entity);
- JobRequisitionItemIDs = GetJobRequisitionIDs(entity);
- }
- protected override void AfterDelete(PurchaseOrder entity)
- {
- base.AfterDelete(entity);
- foreach (var id in JobRequisitionItemIDs)
- JobRequisitionItemStore.UpdateStatus(this, id, JobRequisitionItemAction.Deleted);
- }
- private void DeleteStockMovements(PurchaseOrder entity)
- {
- var items = Provider.Query(
- new Filter<PurchaseOrderItem>(x => x.PurchaseOrderLink.ID).IsEqualTo(entity.ID),
- Columns.None<PurchaseOrderItem>().Add(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()),
- Columns.None<StockMovement>().Add(x => x.ID)
- ).Rows.Select(x => x.ToObject<StockMovement>());
- if (movements.Any())
- FindSubStore<StockMovement>().Delete(movements, "Purchase Order Deleted");
- }
- }
- }
|