This commit is contained in:
@@ -273,10 +273,10 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (item.Override == 0)
|
if (item.Override == 0)
|
||||||
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].Override");
|
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].Override");
|
||||||
if (item.OverrideType == ContractOverrideType.NotSet)
|
if (item.OverrideType == ContractOverrideType.NotSet)
|
||||||
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].OverrideType");
|
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].OverrideType");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -305,10 +305,10 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (item.Override == 0)
|
if (item.Override == 0)
|
||||||
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].Override");
|
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].Override");
|
||||||
if (item.OverrideType == ContractOverrideType.NotSet)
|
if (item.OverrideType == ContractOverrideType.NotSet)
|
||||||
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].OverrideType");
|
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].OverrideType");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -337,15 +337,52 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (item.Override == 0)
|
if (item.Override == 0)
|
||||||
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].Override");
|
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].Override");
|
||||||
if (item.OverrideType == ContractOverrideType.NotSet)
|
if (item.OverrideType == ContractOverrideType.NotSet)
|
||||||
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].OverrideType");
|
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].OverrideType");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//VALIDATE CONTRACT RATE / PART ITEMS
|
||||||
|
if (proposedObj.ServiceRateItems.Count ==0)
|
||||||
|
{
|
||||||
|
if(proposedObj.ContractServiceRatesOnly){
|
||||||
|
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, $"ContractRatesOnly");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
List<string> allTags = new List<string>();
|
||||||
|
|
||||||
|
for (int i = 0; i < proposedObj.ContractPartOverrideItems.Count; i++)
|
||||||
|
{
|
||||||
|
var item = proposedObj.ContractPartOverrideItems[i];
|
||||||
|
if (item.Tags.Count < 1)
|
||||||
|
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].Tags");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//add to list, check for dupes
|
||||||
|
foreach (string s in item.Tags)
|
||||||
|
{
|
||||||
|
if (allTags.Contains(s))
|
||||||
|
{
|
||||||
|
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, $"ContractPartOverrideItems[{i}].Tags");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
allTags.Add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (item.Override == 0)
|
||||||
|
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].Override");
|
||||||
|
if (item.OverrideType == ContractOverrideType.NotSet)
|
||||||
|
AddError(ApiErrorCode.VALIDATION_REQUIRED, $"ContractPartOverrideItems[{i}].OverrideType");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,9 @@ namespace AyaNova.Models
|
|||||||
[Required]
|
[Required]
|
||||||
public TimeSpan ResponseTime { get; set; }
|
public TimeSpan ResponseTime { get; set; }
|
||||||
[Required]
|
[Required]
|
||||||
public bool ContractRatesOnly { get; set; }
|
public bool ContractServiceRatesOnly { get; set; }
|
||||||
|
[Required]
|
||||||
|
public bool ContractTravelRatesOnly { get; set; }
|
||||||
[Required]
|
[Required]
|
||||||
public decimal PartsOverride { get; set; }
|
public decimal PartsOverride { get; set; }
|
||||||
[Required]
|
[Required]
|
||||||
|
|||||||
@@ -200,6 +200,8 @@
|
|||||||
"ContractOverrideType": "Preisanpassungsart",
|
"ContractOverrideType": "Preisanpassungsart",
|
||||||
"ContractOverrideTypePriceDiscount": "Preis minus Prozentsatz",
|
"ContractOverrideTypePriceDiscount": "Preis minus Prozentsatz",
|
||||||
"ContractOverrideTypeMarkup": "Kosten plus Prozentsatz",
|
"ContractOverrideTypeMarkup": "Kosten plus Prozentsatz",
|
||||||
|
"ContractServiceRatesOnly":"Nur auf Vertragsservicetarife beschränkt",
|
||||||
|
"ContractTravelRatesOnly":"Nur für vertraglich vereinbarte Reisetarife",
|
||||||
"CoordinateTypesDecimalDegrees": "Dezimalgrad (DDD,ddd°)",
|
"CoordinateTypesDecimalDegrees": "Dezimalgrad (DDD,ddd°)",
|
||||||
"CoordinateTypesDegreesDecimalMinutes": "Grad Minuten (DDD° MM,mmm)",
|
"CoordinateTypesDegreesDecimalMinutes": "Grad Minuten (DDD° MM,mmm)",
|
||||||
"CoordinateTypesDegreesMinutesSeconds": "Grad Minuten Sekunden (DDD° MM' SS,sss')",
|
"CoordinateTypesDegreesMinutesSeconds": "Grad Minuten Sekunden (DDD° MM' SS,sss')",
|
||||||
|
|||||||
@@ -200,6 +200,8 @@
|
|||||||
"ContractOverrideType": "Price adjustment type",
|
"ContractOverrideType": "Price adjustment type",
|
||||||
"ContractOverrideTypePriceDiscount": "Price minus percentage",
|
"ContractOverrideTypePriceDiscount": "Price minus percentage",
|
||||||
"ContractOverrideTypeMarkup": "Cost plus percentage",
|
"ContractOverrideTypeMarkup": "Cost plus percentage",
|
||||||
|
"ContractServiceRatesOnly":"Restricted to contract Service rates only",
|
||||||
|
"ContractTravelRatesOnly":"Restricted to contract Travel rates only",
|
||||||
"CoordinateTypesDecimalDegrees": "Decimal degrees (DDD.ddd°)",
|
"CoordinateTypesDecimalDegrees": "Decimal degrees (DDD.ddd°)",
|
||||||
"CoordinateTypesDegreesDecimalMinutes": "Degrees minutes (DDD° MM.mmm)",
|
"CoordinateTypesDegreesDecimalMinutes": "Degrees minutes (DDD° MM.mmm)",
|
||||||
"CoordinateTypesDegreesMinutesSeconds": "Degrees Minutes Seconds (DDD° MM' SS.sss')",
|
"CoordinateTypesDegreesMinutesSeconds": "Degrees Minutes Seconds (DDD° MM' SS.sss')",
|
||||||
|
|||||||
@@ -200,6 +200,8 @@
|
|||||||
"ContractOverrideType": "Tipo de ajuste de precio",
|
"ContractOverrideType": "Tipo de ajuste de precio",
|
||||||
"ContractOverrideTypePriceDiscount": "Precio menos porcentaje",
|
"ContractOverrideTypePriceDiscount": "Precio menos porcentaje",
|
||||||
"ContractOverrideTypeMarkup": "Costo más porcentaje",
|
"ContractOverrideTypeMarkup": "Costo más porcentaje",
|
||||||
|
"ContractServiceRatesOnly":"Restringido a tarifas de servicio contratadas únicamente",
|
||||||
|
"ContractTravelRatesOnly":"Restringido a contratar tarifas de viaje únicamente",
|
||||||
"CoordinateTypesDecimalDegrees": "Grados decimales (GGG,ggg°)",
|
"CoordinateTypesDecimalDegrees": "Grados decimales (GGG,ggg°)",
|
||||||
"CoordinateTypesDegreesDecimalMinutes": "Grados minutos (GGG° MM,mmm)",
|
"CoordinateTypesDegreesDecimalMinutes": "Grados minutos (GGG° MM,mmm)",
|
||||||
"CoordinateTypesDegreesMinutesSeconds": "Grados Minutos Segundos (GGG° MM' SS,sss')",
|
"CoordinateTypesDegreesMinutesSeconds": "Grados Minutos Segundos (GGG° MM' SS,sss')",
|
||||||
|
|||||||
@@ -200,6 +200,8 @@
|
|||||||
"ContractOverrideType": "Type d'ajustement de prix",
|
"ContractOverrideType": "Type d'ajustement de prix",
|
||||||
"ContractOverrideTypePriceDiscount": "Prix moins pourcentage",
|
"ContractOverrideTypePriceDiscount": "Prix moins pourcentage",
|
||||||
"ContractOverrideTypeMarkup": "Coût plus pourcentage",
|
"ContractOverrideTypeMarkup": "Coût plus pourcentage",
|
||||||
|
"ContractServiceRatesOnly":"Limité aux tarifs de service contractuels uniquement",
|
||||||
|
"ContractTravelRatesOnly":"Limité aux tarifs contractuels de voyage uniquement",
|
||||||
"CoordinateTypesDecimalDegrees": "Degrés décimaux (DDD,ddd°)",
|
"CoordinateTypesDecimalDegrees": "Degrés décimaux (DDD,ddd°)",
|
||||||
"CoordinateTypesDegreesDecimalMinutes": "Degrés minutes (DDD° MM,mmm)",
|
"CoordinateTypesDegreesDecimalMinutes": "Degrés minutes (DDD° MM,mmm)",
|
||||||
"CoordinateTypesDegreesMinutesSeconds": "Degrés Minutes Secondes (DDD° MM' SS,sss')",
|
"CoordinateTypesDegreesMinutesSeconds": "Degrés Minutes Secondes (DDD° MM' SS,sss')",
|
||||||
|
|||||||
@@ -657,7 +657,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
|
|||||||
//CONTRACT
|
//CONTRACT
|
||||||
await ExecQueryAsync("CREATE TABLE acontract (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name TEXT NOT NULL UNIQUE, active BOOL NOT NULL, "
|
await ExecQueryAsync("CREATE TABLE acontract (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name TEXT NOT NULL UNIQUE, active BOOL NOT NULL, "
|
||||||
+ "notes TEXT, wiki TEXT, customfields TEXT, tags VARCHAR(255) ARRAY, "
|
+ "notes TEXT, wiki TEXT, customfields TEXT, tags VARCHAR(255) ARRAY, "
|
||||||
+ "responsetime INTERVAL NOT NULL, contractratesonly BOOL NOT NULL, partsoverride DECIMAL(5,5) NOT NULL, partsoverridetype INTEGER NOT NULL, "
|
+ "responsetime INTERVAL NOT NULL, contractserviceratesonly BOOL NOT NULL, contracttravelratesonly BOOL NOT NULL, partsoverride DECIMAL(5,5) NOT NULL, partsoverridetype INTEGER NOT NULL, "
|
||||||
+ "serviceratesoverride DECIMAL(5,5) NOT NULL, serviceratesoverridetype INTEGER NOT NULL, travelratesoverride DECIMAL(5,5) NOT NULL, travelratesoverridetype INTEGER NOT NULL, "
|
+ "serviceratesoverride DECIMAL(5,5) NOT NULL, serviceratesoverridetype INTEGER NOT NULL, travelratesoverride DECIMAL(5,5) NOT NULL, travelratesoverridetype INTEGER NOT NULL, "
|
||||||
+ "alertnotes text "
|
+ "alertnotes text "
|
||||||
+ ")");
|
+ ")");
|
||||||
|
|||||||
Reference in New Issue
Block a user