This commit is contained in:
@@ -3608,6 +3608,7 @@ namespace AyaNova.PlugIn.V8
|
|||||||
{
|
{
|
||||||
|
|
||||||
if (!progress.KeepGoing) return;
|
if (!progress.KeepGoing) return;
|
||||||
|
if (!V7UseInventory) return;
|
||||||
progress.Op("Synchronize inventory");
|
progress.Op("Synchronize inventory");
|
||||||
progress.SubOp("");
|
progress.SubOp("");
|
||||||
|
|
||||||
@@ -3642,10 +3643,61 @@ namespace AyaNova.PlugIn.V8
|
|||||||
{
|
{
|
||||||
progress.SubOp("sync part " + i.Name);
|
progress.SubOp("sync part " + i.Name);
|
||||||
PartInventoryList v7inv = PartInventoryList.GetListForSingleItem(i.ID);
|
PartInventoryList v7inv = PartInventoryList.GetListForSingleItem(i.ID);
|
||||||
JObject v8inv = (await util.GetAsync("part/latest-inventory/" + Getv7v8IdMap(i.ID, "part id for synchronize inventory"))).ObjectResponse;
|
long v8PartId=Getv7v8IdMap(i.ID, "part id for synchronize inventory");
|
||||||
|
JObject v8inv = (await util.GetAsync("part/latest-inventory/" + v8PartId )).ObjectResponse;
|
||||||
//iterate v8 inventory
|
//iterate v8 inventory
|
||||||
foreach (JObject v8o in v8inv["data"])
|
foreach (JObject v8o in v8inv["data"])
|
||||||
{
|
{
|
||||||
|
bool handled = false;
|
||||||
|
decimal dAdjust = 0;
|
||||||
|
decimal dMinStockLevel = 0;
|
||||||
|
decimal v8OnHand = (decimal)v8o["balance"];
|
||||||
|
foreach (PartInventoryList.PartInventoryListInfo v7o in v7inv)
|
||||||
|
{
|
||||||
|
long whsv7tov8id = Getv7v8IdMap(v7o.LT_O_PartWarehouse.Value, "whs for inv sync");
|
||||||
|
if (whsv7tov8id == (long)v8o["partWarehouseId"])
|
||||||
|
{
|
||||||
|
//this is the match, do the fixup
|
||||||
|
//v8 inventory starts with 1 billion so every adjustment will always be *down*
|
||||||
|
dAdjust = v7o.LT_PartByWarehouseInventory_Label_QuantityOnHand - v8OnHand;
|
||||||
|
dMinStockLevel = v7o.LT_PartByWarehouseInventory_Label_MinStockLevel;
|
||||||
|
handled = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!handled)
|
||||||
|
{
|
||||||
|
//no v7 matching inventory record, maybe no inventory, in any case reset to none in stock in v8
|
||||||
|
dAdjust = v8OnHand * -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//ok we have our values, send to raven
|
||||||
|
foreach (long l in Allv8WarehouseIds)
|
||||||
|
{
|
||||||
|
dynamic di = new JObject();
|
||||||
|
di.description = "v8 migrate synchronize inventory";
|
||||||
|
di.partId = v8PartId;
|
||||||
|
di.partWarehouseId = (long)v8o["partWarehouseId"];
|
||||||
|
di.quantity = dAdjust;
|
||||||
|
await util.PostAsync("part-inventory", di.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dMinStockLevel > 0)
|
||||||
|
{
|
||||||
|
JObject jsa = (await util.GetAsync("part/stock-levels/" + v8PartId)).ObjectResponse;
|
||||||
|
foreach (JObject js in jsa["data"])
|
||||||
|
{
|
||||||
|
if ((long)js["partWarehouseId"] == (long)v8o["partWarehouseId"])
|
||||||
|
{
|
||||||
|
js["minimumQuantity"] = dMinStockLevel;
|
||||||
|
await util.PostAsync("part/stock-levels/" + v8PartId, jsa["data"].ToString());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//find matching v7 item and adjust
|
//find matching v7 item and adjust
|
||||||
|
|||||||
Reference in New Issue
Block a user