This commit is contained in:
@@ -231,10 +231,17 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
private async Task ValidateAsync(PurchaseOrder proposedObj, PurchaseOrder currentObj)
|
private async Task ValidateAsync(PurchaseOrder proposedObj, PurchaseOrder currentObj)
|
||||||
{
|
{
|
||||||
|
|
||||||
bool isNew = currentObj == null;
|
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?
|
//Any form customizations to validate?
|
||||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.PurchaseOrder.ToString());
|
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.PurchaseOrder.ToString());
|
||||||
@@ -292,15 +299,57 @@ namespace AyaNova.Biz
|
|||||||
i.SourceId = proposedObj.Id;
|
i.SourceId = proposedObj.Id;
|
||||||
await pib.CreateAsync(i);
|
await pib.CreateAsync(i);
|
||||||
|
|
||||||
|
//MIGRATE_OUTSTANDING - update workorderitempart here if applicable
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AyaEvent.Modified:
|
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;
|
break;
|
||||||
case AyaEvent.Deleted:
|
case AyaEvent.Deleted:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
await Task.CompletedTask;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user