This commit is contained in:
2021-05-14 15:56:29 +00:00
parent d1ff92c4e1
commit f9ef637daa
2 changed files with 25 additions and 14 deletions

View File

@@ -234,6 +234,7 @@ namespace AyaNova.Biz
////////////////////////////////// //////////////////////////////////
// COMPARE TAGS COLLECTION // COMPARE TAGS COLLECTION
// //
// A match here means *all* tags in the subscription are present in the object
// //
public static bool TagsMatch(List<string> objectTags, List<string> subTags) public static bool TagsMatch(List<string> objectTags, List<string> subTags)
{ {
@@ -245,9 +246,8 @@ namespace AyaNova.Biz
//not enought tags on object to match sub tags? //not enought tags on object to match sub tags?
if (subTags.Count > objectTags.Count) return false; if (subTags.Count > objectTags.Count) return false;
//ok, here it's worth checking it out //Do ALL the tags in the subscription exist in the object?
return subTags.All(z => objectTags.Any(x => x == z)); return subTags.All(z => objectTags.Any(x => x == z));
} }
///////////////////////////////////////// /////////////////////////////////////////

View File

@@ -1875,26 +1875,37 @@ namespace AyaNova.Biz
//in v7 it was ok to have no service rate selected //in v7 it was ok to have no service rate selected
//not sure why but carried forward to v8 so.. //not sure why but carried forward to v8 so..
if (o.ServiceRateId == null) if (o.ServiceRateId == null)
return;
var Rate = await ct.ServiceRate.AsNoTracking().FirstOrDefaultAsync(z => z.Id == o.ServiceRateId);
if (Rate == null)
{ {
AddError(ApiErrorCode.NOT_FOUND, "generalerror", "Service rate not found");
return; return;
} }
var s = await ct.ServiceRate.AsNoTracking().FirstOrDefaultAsync(z => z.Id == o.ServiceRateId); o.Cost = Rate.Cost;
if(s==null){ o.ListPrice = Rate.Charge;
AddError() o.Price = o.ListPrice;//default is list price unless a contract overrides it
if (c == null)
{
//No contract so bail out now, it's done
return; return;
} }
if (s != null)
{
o.Cost = s.Cost;
o.ListPrice = s.Charge;
}
//CONTRACT ADJUSTMENTS
//default is list price unless a contract overrides it
o.Price = o.ListPrice;
//First check if there is a matching tagged service rate contract discount, that takes precedence //First check if there is a matching tagged service rate contract discount, that takes precedence
if(c.ContractServiceRateOverrideItems.Count>0){
//does our contract rate have a matching tag?
subTags.All(z => objectTags.Any(x => x == z));
foreach(var csr in c.ContractServiceRateOverrideItems){
csr.Tags.
}
}
//If not then check for a generic one //If not then check for a generic one