diff --git a/server/AyaNova/biz/PurchaseOrderBiz.cs b/server/AyaNova/biz/PurchaseOrderBiz.cs index 799c5dae..f8b65302 100644 --- a/server/AyaNova/biz/PurchaseOrderBiz.cs +++ b/server/AyaNova/biz/PurchaseOrderBiz.cs @@ -14,6 +14,7 @@ namespace AyaNova.Biz { internal class PurchaseOrderBiz : BizObject, IJobObject, ISearchAbleObject, IReportAbleObject, IExportAbleObject, INotifiableObject { + internal PurchaseOrderBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles) { ct = dbcontext; @@ -490,7 +491,7 @@ namespace AyaNova.Biz //All new so set them all foreach (var poItem in newObj.Items) - SetPoItemDefaultPartValues(poItem, PoParts, newObj.VendorId); + SetPoItemDefaultPartValues(poItem, PoParts, newObj.VendorId, true); foreach (var poItem in newObj.Items) { @@ -554,7 +555,7 @@ namespace AyaNova.Biz //CHANGED THE VENDOR? (this doesn't preclude other changes as well below) if (oldObj.VendorId != newObj.VendorId) { - SetPoItemDefaultPartValues(newItem, PoParts, newObj.VendorId); + SetPoItemDefaultPartValues(newItem, PoParts, newObj.VendorId, false); } //NEW ITEM ADDED @@ -579,7 +580,7 @@ namespace AyaNova.Biz await PartBiz.AppendSerialsAsync(newItem.PartId, newItem.Serials, ct, UserId); } - SetPoItemDefaultPartValues(newItem, PoParts, newObj.VendorId); + SetPoItemDefaultPartValues(newItem, PoParts, newObj.VendorId, false); if (newItem.WorkOrderItemPartRequestId != null) { @@ -643,7 +644,7 @@ namespace AyaNova.Biz //Update part values into poitem if the part or vendor has changed if (oldItem.PartId != newItem.PartId || oldObj.VendorId != newObj.VendorId) - SetPoItemDefaultPartValues(newItem, PoParts, newObj.VendorId); + SetPoItemDefaultPartValues(newItem, PoParts, newObj.VendorId, false); continue;//Note: this accounts also for any change received quantities so no need to check that below } @@ -675,7 +676,7 @@ namespace AyaNova.Biz //Update part values into poitem if the vendor has changed if (oldObj.VendorId != newObj.VendorId) - SetPoItemDefaultPartValues(newItem, PoParts, newObj.VendorId); + SetPoItemDefaultPartValues(newItem, PoParts, newObj.VendorId, false); //Set received cost if appropriate but don't overwrite an existing one if (newItem.QuantityReceived > 0 && newItem.ReceivedCost == 0 && newItem.PurchaseOrderCost != 0) @@ -729,7 +730,7 @@ namespace AyaNova.Biz //Called to update Part values into poitem like VendorNumber and costs etc - private void SetPoItemDefaultPartValues(PurchaseOrderItem poItem, List poParts, long vendorId) + private void SetPoItemDefaultPartValues(PurchaseOrderItem poItem, List poParts, long vendorId, bool isNewRecord) { var ThisPart = poParts.Single(x => x.Id == poItem.PartId);//part should always be there, if it isn't we have deeper problems //VendorPartNumber @@ -744,7 +745,8 @@ namespace AyaNova.Biz } //Costs - poItem.PurchaseOrderCost = ThisPart.Cost; + if (!isNewRecord || (isNewRecord && poItem.PurchaseOrderCost == 0))//this is an exemption for migration purposes otherwise the cost is overwritten + poItem.PurchaseOrderCost = ThisPart.Cost; }