Prechádzať zdrojové kódy

DESKTOP/STORES - support for purchase Job BOM Item relationships to packets/POs

Nick-PRSDigital@bitbucket.org 2 rokov pred
rodič
commit
a1cba7ee7d

+ 6 - 13
prs.desktop/Panels/Jobs/JobBillOfMaterialsItemsGrid.cs

@@ -56,6 +56,7 @@ namespace PRSDesktop
             HiddenColumns.Add(x => x.PurchaseOrderItem.PurchaseOrderLink.PONumber);
             HiddenColumns.Add(x => x.PurchaseOrderItem.ReceivedDate);
             HiddenColumns.Add(x => x.PurchaseOrderItem.PONumber);
+            HiddenColumns.Add(x => x.Packet.ID);
 
             AddButton("Create Requi", null, CreateRequi);
             AddButton("Create PO", null, CreatePO);
@@ -176,7 +177,7 @@ namespace PRSDesktop
             Guid POID = items[0].ID;
 
             CoreTable table = new Client<PurchaseOrderItem>().Query(new Filter<PurchaseOrderItem>(x => x.PurchaseOrderLink.ID).IsEqualTo(POID),
-                new Columns<PurchaseOrderItem>(x => x.ID, x => x.Product.ID, x => x.Qty, x => x.Dimensions.UnitSize, x => x.DueDate, x => x.Job.ID));
+                new Columns<PurchaseOrderItem>(x => x.ID, x => x.Product.ID, x => x.Qty, x => x.Dimensions.UnitSize, x => x.Dimensions.Value, x => x.Style.ID, x => x.DueDate, x => x.Job.ID));
 
             if (table.Rows.Any())
             {
@@ -216,18 +217,6 @@ namespace PRSDesktop
                 JobBillOfMaterialsItem bomItem = row.ToObject<JobBillOfMaterialsItem>();
                 foreach (var item in poItems)
                 {
-                    if (string.IsNullOrWhiteSpace(bomItem.Dimensions.UnitSize))
-                        bomItem.Dimensions.UnitSize = QueryUnitSize(bomItem.Product.ID);
-
-                    if (string.IsNullOrWhiteSpace(item.Dimensions.UnitSize))
-                        item.Dimensions.UnitSize = QueryUnitSize(item.Product.ID);
-
-                    if (bomItem.Job.ID == Guid.Empty)
-                        bomItem.Job.ID = QueryJobID(bomItem.BillOfMaterials.ID);
-
-                    if (item.Job.ID == Guid.Empty)
-                        item.Job.ID = QueryJobID(bomItem.BillOfMaterials.ID);
-
                     if (MatchBOMItemToPOItem(bomItem, item))
                         bomItems.Add(UpdateBOMItemWithPODetails(bomItem, item));
                 }
@@ -260,6 +249,9 @@ namespace PRSDesktop
         {
             if (bomItem.Product.ID == item.Product.ID &&
                                 bomItem.Dimensions.UnitSize == item.Dimensions.UnitSize &&
+                                bomItem.Dimensions.Value == item.Dimensions.Value &&
+                                bomItem.Style.ID == item.Style.ID &&
+                                bomItem.Quantity == item.Qty &&
                                 bomItem.Job.ID == item.Job.ID)
                 return true;
             else
@@ -281,6 +273,7 @@ namespace PRSDesktop
                 POItem.Product.Name = BOMItem.Product.Name;               
                 POItem.Qty = BOMItem.Quantity;
                 POItem.Dimensions.CopyFrom(BOMItem.Dimensions);
+                POItem.Dimensions.Value = BOMItem.Dimensions.Value;
                 POItem.Style.ID = BOMItem.Style.ID;
                 POItem.Style.Code = BOMItem.Style.Code;
                 POItem.Style.Description = BOMItem.Style.Description;

+ 42 - 0
prs.stores/JobBillOfMaterialsItemStore.cs

@@ -0,0 +1,42 @@
+using Comal.Classes;
+using Comal.Stores;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using InABox.Core;
+
+namespace PRSStores
+{
+    public class JobBillOfMaterialsItemStore : BaseStore<JobBillOfMaterialsItem>
+    {
+        protected override void AfterSave(JobBillOfMaterialsItem entity)
+        {
+            if (entity.Packet.ID != Guid.Empty && entity.PurchaseOrderItem.ID != Guid.Empty)
+            {
+                var packet = Provider.Query<ManufacturingPacket>(new Filter<ManufacturingPacket>(x => x.ID).IsEqualTo(entity.Packet.ID),
+                    new Columns<ManufacturingPacket>(x => x.ID, x => x.OrderItem.ID))
+                    .Rows.FirstOrDefault().ToObject<ManufacturingPacket>();
+                    ;
+
+                if (packet != null)
+                {
+                    packet.OrderItem.ID = entity.PurchaseOrderItem.ID;
+                    Provider.Save(packet);
+                }
+
+                var poItem = Provider.Query<PurchaseOrderItem>(new Filter<PurchaseOrderItem>(x => x.ID).IsEqualTo(entity.PurchaseOrderItem.ID),
+                    new Columns<PurchaseOrderItem>(x => x.ID, x => x.Packet.ID)
+                    ).
+                    Rows.FirstOrDefault().ToObject<PurchaseOrderItem>();
+
+                if (poItem != null)
+                {
+                    poItem.Packet.ID = entity.Packet.ID;
+                    Provider.Save(poItem);
+                }              
+            }
+            base.AfterSave(entity);
+        }
+    }
+}

+ 1 - 0
prs.stores/PRSStores.projitems

@@ -34,6 +34,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)GPSTrackerStore.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)InvoiceReceiptStore.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)InvoiceStore.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)JobBillOfMaterialsItemStore.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)JobMaterialRequsitionStore.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)JobRequisitionItemStore.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)JobRequisitionStore.cs" />