This commit is contained in:
@@ -268,89 +268,110 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//BIZ ACTIONS
|
//BIZ ACTIONS
|
||||||
|
//A PO can now be edited in any way user wishes at any time so this method is to fix up
|
||||||
|
//any changes they make in affected objects and inventory
|
||||||
//
|
//
|
||||||
|
|
||||||
private async Task BizActionsAsync(AyaEvent ayaEvent, PurchaseOrder proposedObj, PurchaseOrder currentObj, IDbContextTransaction transaction)
|
private async Task BizActionsAsync(AyaEvent ayaEvent, PurchaseOrder proposedObj, PurchaseOrder currentObj, IDbContextTransaction transaction)
|
||||||
{
|
{
|
||||||
//TODO: BIZ ACTIONS TO FIXUP INVENTORY ON CHANGES ETC
|
|
||||||
|
|
||||||
//If received now less than before need to take out of inventory
|
|
||||||
//If received now more than before need to put into inventory
|
|
||||||
|
|
||||||
//MIGRATE_OUTSTANDING - woitempart request update
|
//MIGRATE_OUTSTANDING - woitempart request update
|
||||||
//if received on woitempartrequest then need to update woitempartrequest (notification separate not a concern here)
|
//if received on woitempartrequest then need to update woitempartrequest (notification separate not a concern here)
|
||||||
//if workorderitempartrequest item removed, need to fixup woitempartrequest
|
//if workorderitempartrequest item removed, need to fixup woitempartrequest
|
||||||
|
//BUT *only* if the woitempartrequest still exists and isn't completed already
|
||||||
|
|
||||||
PartInventoryBiz pib = new PartInventoryBiz(ct, UserId, UserTranslationId, CurrentUserRoles);
|
PartInventoryBiz pib = new PartInventoryBiz(ct, UserId, UserTranslationId, CurrentUserRoles);
|
||||||
|
|
||||||
switch (ayaEvent)
|
switch (ayaEvent)
|
||||||
{
|
{
|
||||||
case AyaEvent.Created:
|
case AyaEvent.Created:
|
||||||
//any received go into inventory
|
|
||||||
var inventoryAffectingItems = proposedObj.Items.Where(z => z.QuantityReceived > 0).ToList();
|
|
||||||
foreach (var poItem in inventoryAffectingItems)
|
|
||||||
{
|
{
|
||||||
//make inventory adjustment here
|
//any received go into inventory
|
||||||
dtPOPartInventory i = new dtPOPartInventory();
|
var inventoryAffectingItems = proposedObj.Items.Where(z => z.QuantityReceived > 0).ToList();
|
||||||
i.PartId = poItem.PartId;
|
foreach (var poItem in inventoryAffectingItems)
|
||||||
i.PartWarehouseId = poItem.PartWarehouseId;
|
|
||||||
i.Quantity = poItem.QuantityReceived;
|
|
||||||
i.SourceType = AyaType.PurchaseOrder;
|
|
||||||
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
|
//make inventory adjustment here
|
||||||
dtPOPartInventory i = new dtPOPartInventory();
|
dtPOPartInventory i = new dtPOPartInventory();
|
||||||
i.PartId = propPOItem.PartId;
|
i.PartId = poItem.PartId;
|
||||||
i.PartWarehouseId = propPOItem.PartWarehouseId;
|
i.PartWarehouseId = poItem.PartWarehouseId;
|
||||||
i.Quantity = propPOItem.QuantityReceived;
|
i.Quantity = poItem.QuantityReceived;
|
||||||
i.SourceType = AyaType.PurchaseOrder;
|
i.SourceType = AyaType.PurchaseOrder;
|
||||||
i.SourceId = proposedObj.Id;
|
i.SourceId = proposedObj.Id;
|
||||||
await pib.CreateAsync(i);
|
await pib.CreateAsync(i);
|
||||||
|
|
||||||
//MIGRATE_OUTSTANDING - update workorderitempart here if applicable
|
//MIGRATE_OUTSTANDING - update workorderitempart here if applicable
|
||||||
}
|
}
|
||||||
//UPDATED ITEM WITH NEW RECEIVED AMOUNT?
|
}
|
||||||
else if (currentPOItem.QuantityReceived != propPOItem.QuantityReceived)
|
break;
|
||||||
|
case AyaEvent.Modified:
|
||||||
|
{
|
||||||
|
//any changes that will affect inventory get processed here
|
||||||
|
foreach (var newItem in proposedObj.Items)
|
||||||
{
|
{
|
||||||
decimal netChange = 0;
|
//get the matching currentPoItem
|
||||||
|
var oldItem = currentObj.Items.FirstOrDefault(z => z.Id == newItem.Id);
|
||||||
if (currentPOItem.QuantityReceived < propPOItem.QuantityReceived)
|
//NEW ITEM?
|
||||||
|
if (oldItem == null && newItem.QuantityReceived > 0)
|
||||||
{
|
{
|
||||||
//More received
|
//It's a new receipt with received amounts - add to inventory
|
||||||
netChange = propPOItem.QuantityReceived - currentPOItem.QuantityReceived;
|
dtPOPartInventory i = new dtPOPartInventory();
|
||||||
}
|
i.PartId = newItem.PartId;
|
||||||
else
|
i.PartWarehouseId = newItem.PartWarehouseId;
|
||||||
{
|
i.Quantity = newItem.QuantityReceived;
|
||||||
//less received
|
i.SourceType = AyaType.PurchaseOrder;
|
||||||
netChange = propPOItem.QuantityReceived - currentPOItem.QuantityReceived;
|
i.SourceId = proposedObj.Id;
|
||||||
}
|
await pib.CreateAsync(i);
|
||||||
|
|
||||||
|
//MIGRATE_OUTSTANDING - update workorderitempart here if applicable
|
||||||
|
}
|
||||||
|
//UPDATED ITEM WITH NEW RECEIVED AMOUNT?
|
||||||
|
else if (oldItem.QuantityReceived != newItem.QuantityReceived)
|
||||||
|
{
|
||||||
|
decimal netChange = 0;
|
||||||
|
if (oldItem.QuantityReceived < newItem.QuantityReceived)
|
||||||
|
{
|
||||||
|
//More received
|
||||||
|
netChange = newItem.QuantityReceived - oldItem.QuantityReceived;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//less received
|
||||||
|
netChange = newItem.QuantityReceived - oldItem.QuantityReceived;
|
||||||
|
}
|
||||||
|
|
||||||
|
dtPOPartInventory i = new dtPOPartInventory();
|
||||||
|
i.PartId = newItem.PartId;
|
||||||
|
i.PartWarehouseId = newItem.PartWarehouseId;
|
||||||
|
i.Quantity = netChange;
|
||||||
|
i.SourceType = AyaType.PurchaseOrder;
|
||||||
|
i.SourceId = proposedObj.Id;
|
||||||
|
await pib.CreateAsync(i);
|
||||||
|
|
||||||
|
//MIGRATE_OUTSTANDING - update workorderitempart here if applicable
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AyaEvent.Deleted:
|
case AyaEvent.Deleted:
|
||||||
|
{
|
||||||
|
//REVERSE ENTIRE PO
|
||||||
|
//any received remove from inventory
|
||||||
|
var inventoryAffectingItems = currentObj.Items.Where(z => z.QuantityReceived > 0).ToList();
|
||||||
|
foreach (var poItem in inventoryAffectingItems)
|
||||||
|
{
|
||||||
|
//make reversing inventory adjustment here
|
||||||
|
dtPOPartInventory i = new dtPOPartInventory();
|
||||||
|
i.PartId = poItem.PartId;
|
||||||
|
i.PartWarehouseId = poItem.PartWarehouseId;
|
||||||
|
i.Quantity = poItem.QuantityReceived *= -1;
|
||||||
|
i.SourceType = AyaType.PurchaseOrder;
|
||||||
|
i.SourceId = proposedObj.Id;
|
||||||
|
await pib.CreateAsync(i);
|
||||||
|
|
||||||
|
//MIGRATE_OUTSTANDING - update workorderitempart here if applicable
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user