This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -53,7 +53,7 @@
|
||||
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
|
||||
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
||||
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
|
||||
"AYANOVA_SERVER_TEST_MODE": "true",
|
||||
"AYANOVA_SERVER_TEST_MODE": "false",
|
||||
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
|
||||
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
|
||||
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"
|
||||
|
||||
@@ -4917,13 +4917,64 @@ namespace AyaNova.Biz
|
||||
|
||||
foreach (PMItemPart pmp in pmi.Parts)
|
||||
{
|
||||
|
||||
//Check inventory, if insufficient, create part request for balance and make a part record for the available amount even if it's zero as a placeholder
|
||||
//Exception to this: if this part/warehouse combo was already requested anywhere on this work order then we know it's already out of stock so just add it all
|
||||
//as a part request
|
||||
|
||||
//Already requested part/warehouse combo? (means already out of stock effectively)
|
||||
bool AlreadyRequestedOnThisWorkOrder = false;
|
||||
|
||||
foreach (var inventCheckItem in wo.Items)
|
||||
{
|
||||
foreach (var inventRequest in inventCheckItem.PartRequests)
|
||||
{
|
||||
if (inventRequest.PartId == pmp.PartId && inventRequest.PartWarehouseId == pmp.PartWarehouseId)
|
||||
{
|
||||
AlreadyRequestedOnThisWorkOrder = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (AlreadyRequestedOnThisWorkOrder) break;
|
||||
}
|
||||
|
||||
decimal wipQuantity = pmp.Quantity;
|
||||
decimal requestQuantity = 0;
|
||||
|
||||
if (AlreadyRequestedOnThisWorkOrder)
|
||||
{
|
||||
wipQuantity = 0;
|
||||
requestQuantity = pmp.Quantity;
|
||||
}
|
||||
else
|
||||
{
|
||||
//not already requested, so check inventory, this is new
|
||||
var CurrentInventory = await ct.PartInventory.AsNoTracking().OrderByDescending(m => m.EntryDate).FirstOrDefaultAsync(m => m.PartId == pmp.PartId && m.PartWarehouseId == pmp.PartWarehouseId);
|
||||
if (CurrentInventory.Balance < pmp.Quantity)
|
||||
{
|
||||
//we will need a part request here and also need to reserve what there is available
|
||||
wipQuantity = (decimal)CurrentInventory.Balance;
|
||||
requestQuantity = pmp.Quantity - wipQuantity;
|
||||
}
|
||||
}
|
||||
|
||||
//Add request if necessary
|
||||
if (requestQuantity != 0)
|
||||
{
|
||||
var wipr = new WorkOrderItemPartRequest();
|
||||
wipr.PartId = pmp.PartId;
|
||||
wipr.PartWarehouseId = pmp.PartWarehouseId;
|
||||
wipr.Quantity = requestQuantity;
|
||||
woi.PartRequests.Add(wipr);
|
||||
}
|
||||
|
||||
//Add part
|
||||
var wip = new WorkOrderItemPart();
|
||||
wip.Description = pmp.Description;
|
||||
wip.PartId = pmp.PartId;
|
||||
wip.PartWarehouseId = pmp.PartWarehouseId;
|
||||
wip.PriceOverride = pmp.PriceOverride;
|
||||
wip.Quantity = pmp.Quantity;
|
||||
//wip.Serials=pmp.Serials;
|
||||
wip.Quantity = wipQuantity;
|
||||
wip.Tags = pmp.Tags;
|
||||
wip.TaxPartSaleId = pmp.TaxPartSaleId;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user