This commit is contained in:
@@ -322,11 +322,12 @@ namespace AyaNova.Biz
|
|||||||
bool isNew = currentObj == null;
|
bool isNew = currentObj == null;
|
||||||
|
|
||||||
//No poitem can receive negative amounts
|
//No poitem can receive negative amounts
|
||||||
foreach (var propPOItem in proposedObj.Items)
|
for (int i = 0; i < proposedObj.Items.Count; i++)
|
||||||
{
|
{
|
||||||
|
var propPOItem = proposedObj.Items[i];
|
||||||
if (propPOItem.QuantityReceived < 0 || propPOItem.QuantityReceived > propPOItem.QuantityOrdered)
|
if (propPOItem.QuantityReceived < 0 || propPOItem.QuantityReceived > propPOItem.QuantityOrdered)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "generalerror", "LT:PurchaseOrderReceiptItemQuantityReceivedErrorInvalid");
|
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, $"Items[{i}].QuantityReceived", "LT:PurchaseOrderReceiptItemQuantityReceivedErrorInvalid");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,12 +40,12 @@ namespace AyaNova.Biz
|
|||||||
//TODO: CHILD COLLECTION MOD
|
//TODO: CHILD COLLECTION MOD
|
||||||
/*
|
/*
|
||||||
Update RequiredFieldsValidator to look for these period seperated items and navigate through teh collection by name / reflection to step through children and flag errors to include parent
|
Update RequiredFieldsValidator to look for these period seperated items and navigate through teh collection by name / reflection to step through children and flag errors to include parent
|
||||||
e.g in validation error field name could be "poitems.vendorpartnumber:3" to indicate poitems collection 4th row has error in vendorpartnumber
|
e.g in validation error field name could be "poitems[3].vendorpartnumber" to indicate poitems collection 4th row has error in vendorpartnumber
|
||||||
or perhaps it makes sense to add a seperate INDEX property to make client processing easier and not a colon:index scheme in the field name (that actually makes more sense)
|
|
||||||
*/
|
*/
|
||||||
//Now get the actual property name from the available fields using the lt key
|
//Now get the actual property name from the available fields using the lt key
|
||||||
string RequiredPropertyName = FF.FieldKey;
|
string RequiredPropertyName = FF.FieldKey;
|
||||||
|
|
||||||
|
|
||||||
//use reflection to get the underlying value from the proposed object to be saved
|
//use reflection to get the underlying value from the proposed object to be saved
|
||||||
object propertyValue = proposedObject.GetType().GetProperty(RequiredPropertyName).GetValue(proposedObject, null);
|
object propertyValue = proposedObject.GetType().GetProperty(RequiredPropertyName).GetValue(proposedObject, null);
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
namespace AyaNova.Biz
|
namespace AyaNova.Biz
|
||||||
{
|
{
|
||||||
//TODO: CHILD COLLECTION MOD add "Index" property to indicate child collection index location of error
|
|
||||||
public class ValidationError
|
public class ValidationError
|
||||||
{
|
{
|
||||||
|
//TARGET is the Model name of the property which matches the client UI annotations for ref
|
||||||
|
|
||||||
|
//if the target error is a child item collection field the Target must be "items[2].field"
|
||||||
|
//where "items" is the item collection model name and 2 is the index of the collection with the error and field is the ultimate field model name
|
||||||
|
//Case doesn't matter as the client will compare in lower case all items anyway
|
||||||
|
|
||||||
|
|
||||||
public ApiErrorCode Code { get; set; }
|
public ApiErrorCode Code { get; set; }
|
||||||
public string Target { get; set; }
|
public string Target { get; set; }
|
||||||
public string Message { get; set; }
|
public string Message { get; set; }
|
||||||
|
|||||||
Reference in New Issue
Block a user