This commit is contained in:
2021-02-16 19:52:58 +00:00
parent 5e1b846059
commit b34162c00d

View File

@@ -231,10 +231,17 @@ namespace AyaNova.Biz
private async Task ValidateAsync(PurchaseOrder proposedObj, PurchaseOrder currentObj)
{
bool isNew = currentObj == null;
//No poitem can receive negative amounts
foreach (var propPOItem in proposedObj.Items)
{
if (propPOItem.QuantityReceived < 0 || propPOItem.QuantityReceived > propPOItem.QuantityOrdered)
{
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "generalerror", "LT:PurchaseOrderReceiptItemQuantityReceivedErrorInvalid");
return;
}
}
//Any form customizations to validate?
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.PurchaseOrder.ToString());
@@ -292,15 +299,57 @@ namespace AyaNova.Biz
i.SourceId = proposedObj.Id;
await pib.CreateAsync(i);
//MIGRATE_OUTSTANDING - update workorderitempart here if applicable
}
break;
case AyaEvent.Modified:
//any changes that will affect inventory get processed here
foreach (var propPOItem in proposedObj.Items)
{
//get the matching currentPoItem
var currentPOItem = currentObj.Items.FirstOrDefault(z => z.Id == propPOItem.Id);
//NEW ITEM?
if (currentPOItem == null && propPOItem.QuantityReceived > 0)
{
//It's a new receipt from before, add to inventory
dtPOPartInventory i = new dtPOPartInventory();
i.PartId = propPOItem.PartId;
i.PartWarehouseId = propPOItem.PartWarehouseId;
i.Quantity = propPOItem.QuantityReceived;
i.SourceType = AyaType.PurchaseOrder;
i.SourceId = proposedObj.Id;
await pib.CreateAsync(i);
//MIGRATE_OUTSTANDING - update workorderitempart here if applicable
}
//UPDATED ITEM WITH NEW RECEIVED AMOUNT?
else if (currentPOItem.QuantityReceived != propPOItem.QuantityReceived)
{
decimal netChange = 0;
if (currentPOItem.QuantityReceived < propPOItem.QuantityReceived)
{
//More received
netChange = propPOItem.QuantityReceived - currentPOItem.QuantityReceived;
}
else
{
//less received
netChange = propPOItem.QuantityReceived - currentPOItem.QuantityReceived;
}
}
}
break;
case AyaEvent.Deleted:
break;
}
await Task.CompletedTask;
}