From b34162c00dfd9dea7f59a48f4ce75ad82024abbf Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 16 Feb 2021 19:52:58 +0000 Subject: [PATCH] --- server/AyaNova/biz/PurchaseOrderBiz.cs | 55 ++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/server/AyaNova/biz/PurchaseOrderBiz.cs b/server/AyaNova/biz/PurchaseOrderBiz.cs index ce746450..c511342b 100644 --- a/server/AyaNova/biz/PurchaseOrderBiz.cs +++ b/server/AyaNova/biz/PurchaseOrderBiz.cs @@ -231,10 +231,17 @@ namespace AyaNova.Biz private async Task ValidateAsync(PurchaseOrder proposedObj, PurchaseOrder currentObj) { - bool isNew = currentObj == null; - + //No poitem can receive negative amounts + foreach (var propPOItem in proposedObj.Items) + { + if (propPOItem.QuantityReceived < 0 || propPOItem.QuantityReceived > propPOItem.QuantityOrdered) + { + AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "generalerror", "LT:PurchaseOrderReceiptItemQuantityReceivedErrorInvalid"); + return; + } + } //Any form customizations to validate? var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.PurchaseOrder.ToString()); @@ -292,15 +299,57 @@ namespace AyaNova.Biz i.SourceId = proposedObj.Id; await pib.CreateAsync(i); + //MIGRATE_OUTSTANDING - update workorderitempart here if applicable } break; case AyaEvent.Modified: + //any changes that will affect inventory get processed here + foreach (var propPOItem in proposedObj.Items) + { + //get the matching currentPoItem + var currentPOItem = currentObj.Items.FirstOrDefault(z => z.Id == propPOItem.Id); + //NEW ITEM? + if (currentPOItem == null && propPOItem.QuantityReceived > 0) + { + //It's a new receipt from before, add to inventory + dtPOPartInventory i = new dtPOPartInventory(); + i.PartId = propPOItem.PartId; + i.PartWarehouseId = propPOItem.PartWarehouseId; + i.Quantity = propPOItem.QuantityReceived; + i.SourceType = AyaType.PurchaseOrder; + i.SourceId = proposedObj.Id; + await pib.CreateAsync(i); + + //MIGRATE_OUTSTANDING - update workorderitempart here if applicable + } + //UPDATED ITEM WITH NEW RECEIVED AMOUNT? + else if (currentPOItem.QuantityReceived != propPOItem.QuantityReceived) + { + decimal netChange = 0; + + if (currentPOItem.QuantityReceived < propPOItem.QuantityReceived) + { + //More received + netChange = propPOItem.QuantityReceived - currentPOItem.QuantityReceived; + } + else + { + //less received + netChange = propPOItem.QuantityReceived - currentPOItem.QuantityReceived; + } + + + } + + + + } break; case AyaEvent.Deleted: break; } - await Task.CompletedTask; + }