This commit is contained in:
2021-07-30 23:46:30 +00:00
parent 1f134abbbf
commit 1b65059336
2 changed files with 113 additions and 62 deletions

2
.vscode/launch.json vendored
View File

@@ -53,7 +53,7 @@
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles", "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_SEEDLEVEL": "small",
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\" "AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"

View File

@@ -4917,13 +4917,64 @@ namespace AyaNova.Biz
foreach (PMItemPart pmp in pmi.Parts) 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(); var wip = new WorkOrderItemPart();
wip.Description = pmp.Description; wip.Description = pmp.Description;
wip.PartId = pmp.PartId; wip.PartId = pmp.PartId;
wip.PartWarehouseId = pmp.PartWarehouseId; wip.PartWarehouseId = pmp.PartWarehouseId;
wip.PriceOverride = pmp.PriceOverride; wip.PriceOverride = pmp.PriceOverride;
wip.Quantity = pmp.Quantity; wip.Quantity = wipQuantity;
//wip.Serials=pmp.Serials;
wip.Tags = pmp.Tags; wip.Tags = pmp.Tags;
wip.TaxPartSaleId = pmp.TaxPartSaleId; wip.TaxPartSaleId = pmp.TaxPartSaleId;