diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index f7113b45..6755a757 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -216,6 +216,15 @@ namespace AyaNova.Biz AddError(ApiErrorCode.CONCURRENCY_CONFLICT); return null; } + + + putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); + putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); + await WorkOrderValidateAsync(putObject, dbObject); + if (HasErrors) + return null; + await WorkOrderBizActionsAsync(AyaEvent.Modified, putObject, dbObject, null); + bool contractChanged = false; long? newContractId = null; if (putObject.ContractId != dbObject.ContractId)//manual change of contract @@ -224,12 +233,6 @@ namespace AyaNova.Biz newContractId = putObject.ContractId; } - putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); - putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); - await WorkOrderValidateAsync(putObject, dbObject); - if (HasErrors) - return null; - await WorkOrderBizActionsAsync(AyaEvent.Modified, putObject, dbObject, null); ct.Replace(dbObject, putObject); try { @@ -335,15 +338,18 @@ namespace AyaNova.Biz if (newObj.CustomerId != oldObj.CustomerId) { await AutoSetContractAsync(newObj); - } + } } - } private async Task AutoSetContractAsync(WorkOrder newObj) { + //first reset contract fetched flag so a fresh copy is taken + //in case it was set already by other operations + mFetchedContractAlready = false; + //CONTRACT AUTO SET - if (newObj.ContractId == null && newObj.CustomerId != 0) + if (newObj.CustomerId != 0) { //unit->customer->headoffice var cust = await ct.Customer.AsNoTracking().Where(z => z.Id == newObj.CustomerId).Select(z => new { headofficeId = z.HeadOfficeId, contractId = z.ContractId }).FirstOrDefaultAsync(); @@ -354,7 +360,9 @@ namespace AyaNova.Biz newObj.ContractId = hoContractId; } else - newObj.ContractId = cust.contractId; + newObj.ContractId = cust.contractId;//if ultimately no contract for this customer or ho then it's set to null anyway which is what we want + }else{ + newObj.ContractId=null;//no customer then contract } //RESPONSE TIME / COMPLETE BY AUTO SET