فهرست منبع

STORES - fixed typo for deleting stockmovements on empty receive date, added delete stockmovements for when entire PO is deleted

Nick-PRSDigital@bitbucket.org 2 سال پیش
والد
کامیت
19cd2de8e6
2فایلهای تغییر یافته به همراه29 افزوده شده و 2 حذف شده
  1. 2 2
      prs.stores/PurchaseOrderItemStore.cs
  2. 27 0
      prs.stores/PurchaseOrderStore.cs

+ 2 - 2
prs.stores/PurchaseOrderItemStore.cs

@@ -245,9 +245,9 @@ namespace Comal.Stores
         {
             base.AfterSave(entity);
 
-            if (entity.ReceivedDate.IsEmpty() && entity.HasOriginalValue<PurchaseOrderItem>("RecievedDate"))
+            if (entity.ReceivedDate == DateTime.MinValue && entity.HasOriginalValue<PurchaseOrderItem>("ReceivedDate"))
             {                 
-                if(DateTime.Parse(entity.OriginalValues["RecievedDate"].ToString()) != entity.ReceivedDate)
+                if(DateTime.Parse(entity.OriginalValues["ReceivedDate"].ToString()) != entity.ReceivedDate)
                     DeleteStockMovements(entity);
             }            
             else if(!entity.ReceivedDate.IsEmpty())

+ 27 - 0
prs.stores/PurchaseOrderStore.cs

@@ -1,4 +1,9 @@
 using Comal.Classes;
+using InABox.Core;
+using NPOI.HPSF;
+using System;
+using System.Collections.Generic;
+using System.Linq;
 
 namespace Comal.Stores
 {
@@ -21,6 +26,28 @@ namespace Comal.Stores
         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");
+        }
+
     }
 }