diff --git a/server/AyaNova/biz/PurchaseOrderBiz.cs b/server/AyaNova/biz/PurchaseOrderBiz.cs index a29c0465..61414f2b 100644 --- a/server/AyaNova/biz/PurchaseOrderBiz.cs +++ b/server/AyaNova/biz/PurchaseOrderBiz.cs @@ -403,11 +403,6 @@ namespace AyaNova.Biz // private async Task BizActionsAsync(AyaEvent ayaEvent, PurchaseOrder newObj, PurchaseOrder oldObj, IDbContextTransaction transaction) { - //MIGRATE_OUTSTANDING - woitempart request update - //if received on woitempartrequest then need to update woitempartrequest (notification separate not a concern here) - //if workorderitempartrequest item removed, need to fixup woitempartrequest - //BUT *only* if the woitempartrequest still exists and isn't completed already - //Get inventory object for updating PartInventoryBiz pib = new PartInventoryBiz(ct, UserId, UserTranslationId, CurrentUserRoles); @@ -433,6 +428,9 @@ namespace AyaNova.Biz AddError(ApiErrorCode.API_SERVER_ERROR, "generalerror", $"Error updating inventory ({i.Description}):{pib.GetErrorsAsString()}"); return; } + + //might have contributed serials so remove them here, handles empty serials so no issue calling this + await PartBiz.RemoveSerialsAsync(poItem.PartId, poItem.Serials, ct, UserId); } foreach (var poItem in oldObj.Items) @@ -444,6 +442,7 @@ namespace AyaNova.Biz if (w != null) { w.PurchaseOrderItemId = null; + w.Received = 0; } } } @@ -493,6 +492,7 @@ namespace AyaNova.Biz if (w != null) { w.PurchaseOrderItemId = poItem.Id; + w.Received = poItem.QuantityReceived; } } } @@ -532,6 +532,18 @@ namespace AyaNova.Biz //might have serials so remove those as well await PartBiz.RemoveSerialsAsync(oldItem.PartId, oldItem.Serials, ct, UserId); } + + //fixup woitempartrequest if any + if (oldItem.WorkOrderItemPartRequestId != null) + { + //De-request it + var w = await ct.WorkOrderItemPartRequest.FirstOrDefaultAsync(x => x.Id == oldItem.WorkOrderItemPartRequestId); + if (w != null) + { + w.PurchaseOrderItemId = null; + w.Received = 0; + } + } } } @@ -571,7 +583,16 @@ namespace AyaNova.Biz SetPoItemDefaultPartValues(newItem, PoParts, newObj.VendorId); - //MIGRATE_OUTSTANDING - update workorderitempart here if applicable + if (newItem.WorkOrderItemPartRequestId != null) + { + //set it on request + var w = await ct.WorkOrderItemPartRequest.FirstOrDefaultAsync(x => x.Id == newItem.WorkOrderItemPartRequestId); + if (w != null) + { + w.PurchaseOrderItemId = newItem.Id; + w.Received = newItem.QuantityReceived; + } + } continue;//on to next item no possible other changes here } @@ -596,6 +617,18 @@ namespace AyaNova.Biz } await PartBiz.RemoveSerialsAsync(oldItem.PartId, oldItem.Serials, ct, UserId); + + //change of serial or part invalidates the workorderitempartrequest as it has specific part and warehouse so remove it here + if (oldItem.WorkOrderItemPartRequestId != null) + { + //De-request it + var w = await ct.WorkOrderItemPartRequest.FirstOrDefaultAsync(x => x.Id == oldItem.WorkOrderItemPartRequestId); + if (w != null) + { + w.PurchaseOrderItemId = null; + w.Received = 0; + } + } } if (newItem.QuantityReceived > 0) @@ -615,6 +648,16 @@ namespace AyaNova.Biz } await PartBiz.AppendSerialsAsync(newItem.PartId, newItem.Serials, ct, UserId); + if (newItem.WorkOrderItemPartRequestId != null) + { + //set it on request + var w = await ct.WorkOrderItemPartRequest.FirstOrDefaultAsync(x => x.Id == newItem.WorkOrderItemPartRequestId); + if (w != null) + { + w.PurchaseOrderItemId = newItem.Id; + w.Received = newItem.QuantityReceived; + } + } } //Update part values into poitem if the part or vendor has changed @@ -663,6 +706,17 @@ namespace AyaNova.Biz await PartBiz.RemoveSerialsAsync(oldItem.PartId, oldItem.Serials, ct, UserId); await PartBiz.AppendSerialsAsync(newItem.PartId, newItem.Serials, ct, UserId); } + + //update workorderitempartrequest if applicable + if (oldItem.WorkOrderItemPartRequestId != null) + { + //set it on request + var w = await ct.WorkOrderItemPartRequest.FirstOrDefaultAsync(x => x.Id == oldItem.WorkOrderItemPartRequestId); + if (w != null) + { + w.Received = newItem.QuantityReceived; + } + } continue;//on to next }