From 84b1037698177c6c7521bda60b3478a86714a9f0 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 26 Aug 2021 15:38:48 +0000 Subject: [PATCH] --- .vscode/launch.json | 2 +- server/AyaNova/biz/PurchaseOrderBiz.cs | 73 ++++++++----------- server/AyaNova/biz/WorkOrderBiz.cs | 4 + server/AyaNova/models/ViewPartRequestList.cs | 3 + .../models/WorkOrderItemPartRequest.cs | 3 + server/AyaNova/util/AySchema.cs | 5 +- 6 files changed, 43 insertions(+), 47 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index b77f3b95..fcc80a75 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -53,7 +53,7 @@ "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", "AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles", - "AYANOVA_SERVER_TEST_MODE": "false", + "AYANOVA_SERVER_TEST_MODE": "true", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7", "AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\" diff --git a/server/AyaNova/biz/PurchaseOrderBiz.cs b/server/AyaNova/biz/PurchaseOrderBiz.cs index f9b21b6e..a29c0465 100644 --- a/server/AyaNova/biz/PurchaseOrderBiz.cs +++ b/server/AyaNova/biz/PurchaseOrderBiz.cs @@ -74,45 +74,6 @@ namespace AyaNova.Biz } } - // //////////////////////////////////////////////////////////////////////////////////////////////// - // //DUPLICATE - // // - // internal async Task DuplicateAsync(long id) - // { - // //TODO: allow this but only with ZEROS set for the actual received amount and ignore woitempart requested during dupe? - - // var dbObject = await GetAsync(id, false, false); - // if (dbObject == null) - // { - // AddError(ApiErrorCode.NOT_FOUND, "id"); - // return null; - // } - // PurchaseOrder newObject = new PurchaseOrder(); - // CopyObject.Copy(dbObject, newObject, "Wiki,Serial"); - // newObject.Id = 0; - // newObject.Concurrency = 0; - // newObject.Status = PurchaseOrderStatus.OpenNotYetOrdered; - // foreach (var item in newObject.Items) - // { - // item.Id = 0; - // item.Concurrency = 0; - // item.QuantityReceived = 0; - // item.ReceivedCost = 0; - // item.ReceivedDate = null; - // item.PurchaseOrderId = 0; - // item.WorkOrderItemPartRequestId = null; - // item.PartRequestedById = null; - // } - - // await ct.PurchaseOrder.AddAsync(newObject); - // await ct.SaveChangesAsync(); - // await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, BizType, AyaEvent.Created), ct); - // await SearchIndexAsync(newObject, true); - // await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, newObject.Tags, null); - // await HandlePotentialNotificationEvent(AyaEvent.Created, newObject); - // await SetDisplayFields(newObject); - // return newObject; - // } //////////////////////////////////////////////////////////////////////////////////////////////// //GET @@ -217,8 +178,8 @@ namespace AyaNova.Biz if (item.WorkOrderItemPartRequestId != null) { po.HasPartRequest = true; - - item.WorkOrderItemPartRequestViz=(await WorkOrderBiz.GetWorkOrderSerialFromRelativeAsync(AyaType.WorkOrderItemPartRequest, (long)item.WorkOrderItemPartRequestId, ct)).ToString(); + + item.WorkOrderItemPartRequestViz = (await WorkOrderBiz.GetWorkOrderSerialFromRelativeAsync(AyaType.WorkOrderItemPartRequest, (long)item.WorkOrderItemPartRequestId, ct)).ToString(); if (item.PartRequestedById != null) item.PartRequestedByViz = await ct.User.AsNoTracking().Where(x => x.Id == item.PartRequestedById).Select(x => x.Name).FirstOrDefaultAsync(); } @@ -472,8 +433,19 @@ namespace AyaNova.Biz AddError(ApiErrorCode.API_SERVER_ERROR, "generalerror", $"Error updating inventory ({i.Description}):{pib.GetErrorsAsString()}"); return; } + } - //MIGRATE_OUTSTANDING - update workorderitempart here if applicable + foreach (var poItem in oldObj.Items) + { + if (poItem.WorkOrderItemPartRequestId != null) + { + //De-request it + var w = await ct.WorkOrderItemPartRequest.FirstOrDefaultAsync(x => x.Id == poItem.WorkOrderItemPartRequestId); + if (w != null) + { + w.PurchaseOrderItemId = null; + } + } } return;//done, nothing more to do here } @@ -506,12 +478,25 @@ namespace AyaNova.Biz await PartBiz.AppendSerialsAsync(poItem.PartId, poItem.Serials, ct, UserId); - //MIGRATE_OUTSTANDING - update workorderitempart here if applicable } //All new so set them all foreach (var poItem in newObj.Items) SetPoItemDefaultPartValues(poItem, PoParts, newObj.VendorId); + + foreach (var poItem in newObj.Items) + { + if (poItem.WorkOrderItemPartRequestId != null) + { + //set it on request + var w = await ct.WorkOrderItemPartRequest.FirstOrDefaultAsync(x => x.Id == poItem.WorkOrderItemPartRequestId); + if (w != null) + { + w.PurchaseOrderItemId = poItem.Id; + } + } + } + return; } @@ -851,7 +836,7 @@ namespace AyaNova.Biz public async Task HandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null) { ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger(); - if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return; + if (ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return; log.LogDebug($"HandlePotentialNotificationEvent processing: [AyaType:{this.BizType}, AyaEvent:{ayaEvent}]"); bool isNew = currentObj == null; diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index 16d8d62e..ee93a74d 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -4571,6 +4571,10 @@ namespace AyaNova.Biz o.PurchaseOrderIdViz = po.Id; o.PurchaseOrderDateViz = po.OrderedDate; o.PurchaseOrderExpectedDateViz = po.ExpectedReceiveDate; + + if(o.RequestedByUserId!=null){ + o.RequestedByUserViz=await ct.User.AsNoTracking().Where(x => x.Id == o.RequestedByUserId).Select(x => x.Name).FirstOrDefaultAsync(); + } } } diff --git a/server/AyaNova/models/ViewPartRequestList.cs b/server/AyaNova/models/ViewPartRequestList.cs index bcb7ce06..5d95fe03 100644 --- a/server/AyaNova/models/ViewPartRequestList.cs +++ b/server/AyaNova/models/ViewPartRequestList.cs @@ -17,6 +17,9 @@ namespace AyaNova.Models public string WholesalerName { get; set; } public long AltWholesalerId { get; set; } public string AltWholesalerName { get; set; } + public string RequestedByUserName { get; set; } + public long RequestedByUserId { get; set; } + }//eoc }//eons diff --git a/server/AyaNova/models/WorkOrderItemPartRequest.cs b/server/AyaNova/models/WorkOrderItemPartRequest.cs index 23a73890..f1adb6c9 100644 --- a/server/AyaNova/models/WorkOrderItemPartRequest.cs +++ b/server/AyaNova/models/WorkOrderItemPartRequest.cs @@ -26,6 +26,9 @@ namespace AyaNova.Models [Required] public decimal Quantity { get; set; } + public long? RequestedByUserId { get; set; } + [NotMapped] + public string RequestedByUserViz { get; set; } public long? PurchaseOrderItemId { get; set; } [NotMapped] public string PurchaseOrderViz { get; set; } diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index b10d3c3b..74edbd35 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -833,7 +833,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); //WORKORDERITEM PART REQUEST await ExecQueryAsync("CREATE TABLE aworkorderitempartrequest (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, workorderitemid BIGINT NOT NULL REFERENCES aworkorderitem (id), " + "partid BIGINT NOT NULL REFERENCES apart, partwarehouseid BIGINT NOT NULL REFERENCES apartwarehouse, quantity DECIMAL(19,5) NOT NULL default 0, received DECIMAL(19,5) NOT NULL default 0, " - + "purchaseorderitemid BIGINT NULL REFERENCES apurchaseorderitem" + + "requestedbyuserid BIGINT NULL REFERENCES auser, purchaseorderitemid BIGINT NULL REFERENCES apurchaseorderitem" + ")"); //WORKORDERITEM SCHEDULED USER @@ -915,9 +915,10 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); //VIEWPARTREQUESTLIST await ExecQueryAsync("CREATE VIEW viewpartrequestlist AS SELECT AWORKORDERITEMPARTREQUEST.ID AS REQUESTID, PARTID, PARTWAREHOUSEID, QUANTITY, AWORKORDER.SERIAL, " +"APART.PARTNUMBER AS PARTNUMBER, APART.NAME AS PARTNAME, APARTWAREHOUSE.NAME AS PARTWAREHOUSENAME, AWHOLESALER.NAME AS WHOLESALERNAME, " + +"AWORKORDERITEMPARTREQUEST.REQUESTEDBYUSERID AS REQUESTEDBYUSERID, AUSER.NAME AS REQUESTEDBYUSERNAME, " +"AWHOLESALER.ID AS WHOLESALERID, AALTWHOLESALER.ID AS ALTWHOLESALERID, AALTWHOLESALER.NAME AS ALTWHOLESALERNAME FROM AWORKORDERITEMPARTREQUEST " +"LEFT JOIN AWORKORDERITEM ON AWORKORDERITEM.ID = AWORKORDERITEMPARTREQUEST.WORKORDERITEMID LEFT JOIN AWORKORDER ON AWORKORDERITEM.WORKORDERID = AWORKORDER.ID " - +"LEFT JOIN AWORKORDERSTATUS ON AWORKORDER.LASTSTATUSID = AWORKORDERSTATUS.ID LEFT JOIN APART ON AWORKORDERITEMPARTREQUEST.PARTID = APART.ID " + +"LEFT JOIN AWORKORDERSTATUS ON AWORKORDER.LASTSTATUSID = AWORKORDERSTATUS.ID LEFT JOIN APART ON AWORKORDERITEMPARTREQUEST.PARTID = APART.ID LEFT JOIN AUSER ON AWORKORDERITEMPARTREQUEST.REQUESTEDBYUSERID " +"LEFT JOIN APARTWAREHOUSE ON AWORKORDERITEMPARTREQUEST.PARTWAREHOUSEID = APARTWAREHOUSE.ID LEFT JOIN AVENDOR AS AWHOLESALER ON (APART.WHOLESALERID = AWHOLESALER.ID) " +"LEFT JOIN AVENDOR AS AALTWHOLESALER ON (APART.ALTERNATIVEWHOLESALERID = AALTWHOLESALER.ID) WHERE AWORKORDERITEMPARTREQUEST.PURCHASEORDERITEMID IS NULL AND " +"(AWORKORDER.LASTSTATUSID IS NULL OR AWORKORDERSTATUS.COMPLETED = FALSE) ORDER BY AWORKORDERITEMPARTREQUEST.ID;");