This commit is contained in:
2021-08-17 19:23:03 +00:00
parent a982949805
commit 453f023eea

View File

@@ -3482,9 +3482,9 @@ namespace AyaNova.PlugIn.V8
foreach (WorkorderItem wi in c.WorkorderItems)
{
List<string> witags = new List<string>();
progress.SubOp("WorkorderItem " + wi.ID.ToString());
progress.SubOp("QuoteItem " + wi.ID.ToString());
dynamic dwi = new JObject();
dwi.workOrderId = RavenId;
dwi.quoteId = RavenId;
dwi.sequence = ++nSequence;
if (!string.IsNullOrWhiteSpace(wi.Summary))//in v8 summary is reqd.
dwi.notes = wi.Summary;
@@ -3505,7 +3505,7 @@ namespace AyaNova.PlugIn.V8
dwi.customFields = CustomFieldData(wi, DateCustomFields);
var ravenwoitemid = util.IdFromResponse(await util.PostAsync("workorder/items", dwi.ToString()));
var ravenwoitemid = util.IdFromResponse(await util.PostAsync("quote/items", dwi.ToString()));
await util.EventLog(util.AyaType.WorkOrderItem, ravenwoitemid, SafeGetUserMap(wi.Creator), SafeGetUserMap(wi.Modifier), wi.Created, wi.Modified);
//##### WORKORDER ITEM UNIT
@@ -3517,15 +3517,15 @@ namespace AyaNova.PlugIn.V8
if (ravUnitId != null)
{
//we have a legit unit record, make it for v8
progress.SubOp("WorkorderItemUnit " + wi.UnitID.ToString());
progress.SubOp("QuoteItemUnit " + wi.UnitID.ToString());
dynamic dwiu = new JObject();
dwiu.workOrderId = RavenId;
dwiu.workorderItemId = ravenwoitemid;
dwiu.quoteId = RavenId;
dwiu.quoteItemId = ravenwoitemid;
dwiu.unitId = ravUnitId;
List<string> wiutags = new List<string>();
TagFromv7Guid(wi.WorkorderItemUnitServiceTypeID, wiutags);
SetTags(dwiu, wiutags);
await util.PostAsync("workorder/items/units", dwiu.ToString());
await util.PostAsync("quote/items/units", dwiu.ToString());
}
}
@@ -3533,26 +3533,26 @@ namespace AyaNova.PlugIn.V8
//##### WORKORDER ITEM SCHEDULED USER
foreach (WorkorderItemScheduledUser wisu in wi.ScheduledUsers)
{
progress.SubOp("WorkorderItemScheduledUser " + wisu.ID.ToString());
progress.SubOp("QuoteItemScheduledUser " + wisu.ID.ToString());
dynamic dwisu = new JObject();
dwisu.workOrderId = RavenId;
dwisu.workorderItemId = ravenwoitemid;
dwisu.quoteId = RavenId;
dwisu.quoteItemId = ravenwoitemid;
//null is ok here for a sched user
dwisu.userId = Getv7v8IdMapNullOk(wisu.UserID);
dwisu.startDate = util.DateToV8(wisu.StartDate);
dwisu.stopDate = util.DateToV8(wisu.StopDate);
dwisu.estimatedQuantity = wisu.EstimatedQuantity;
dwisu.serviceRateId = Getv7v8IdMapNullOk(wisu.ServiceRateID);
await util.PostAsync("workorder/items/scheduled-users", dwisu.ToString());
await util.PostAsync("quote/items/scheduled-users", dwisu.ToString());
}
//##### WORKORDER ITEM PART
foreach (WorkorderItemPart wip in wi.Parts)
{
progress.SubOp("WorkorderItemPart " + wip.ID.ToString());
progress.SubOp("QuoteItemPart " + wip.ID.ToString());
dynamic dwip = new JObject();
dwip.workOrderId = RavenId;
dwip.workorderItemId = ravenwoitemid;
dwip.quoteId = RavenId;
dwip.quoteItemId = ravenwoitemid;
dwip.quantity = wip.Quantity;
var tryPartId = Getv7v8IdMapNullOk(wip.PartID);
if (tryPartId == null)
@@ -3574,122 +3574,18 @@ namespace AyaNova.PlugIn.V8
dwip.description = wip.Description;
if (wip.PartSerialID != Guid.Empty)
dwip.serials = PartSerial.GetSerialNumberFromPartSerialID(wip.PartSerialID);
await util.PostAsync("workorder/items/parts", dwip.ToString());
}
//##### WORKORDER ITEM PARTREQUEST
foreach (WorkorderItemPartRequest wipr in wi.PartRequests)
{
progress.SubOp("WorkorderItemPartRequest " + wipr.ID.ToString());
if (wipr.Quantity == 0) continue;
JObject dPO = null;
JObject v8poitemtoupdate = null;
dynamic dwipr = new JObject();
dwipr.workOrderId = RavenId;
dwipr.workorderItemId = ravenwoitemid;
dwipr.quantity = wipr.Quantity;
var tryPartId = Getv7v8IdMapNullOk(wipr.PartID);
if (tryPartId == null)
{
dwipr.partId = UnknownV7PartId;
}
else
dwipr.partId = tryPartId;
dwipr.partWarehouseId = Getv7v8IdMap(wipr.PartWarehouseID, "warehouse");
poitemtowoitempartrequest pto = PoItemPartRequestMap.FirstOrDefault(z => z.v7woitempartrequestid == wipr.ID);
if (pto != null)
{
//tag this part request with the v8 poitem id that matches
//get v8 po id
//fetch po
//iterate po and look for item with the vendorpartnumber set to this woitempartid by guid string
//update the po item with the raven partrequestid
//save po
long? v8poid = Getv7v8IdMapNullOk(pto.v7poid);
if (v8poid != null)
{
var a = await util.GetAsync("purchase-order/" + v8poid.ToString());
dPO = (JObject)a.ObjectResponse["data"];
if (dPO != null)
{
v8poitemtoupdate = (JObject)dPO["items"].FirstOrDefault(z => (string)z["vendorPartNumber"] == wipr.ID.ToString());
if (v8poitemtoupdate != null)
{
//update the woitempart request purchase order item id
dwipr.purchaseOrderItemId = (long)v8poitemtoupdate["id"];
}
}
}
}
//TODO: if migrate purchase orders this is reqd
// dwipr.purchaseOrderItemId = Getv7v8IdMapNullOk(wipr.PurchaseOrderItemID);
long v8partrequestid = util.IdFromResponse(await util.PostAsync("workorder/items/part-requests", dwipr.ToString()));
//SAVE PO if fetched and updated here
if (dPO != null && v8poitemtoupdate != null)
{
//save the PO
v8poitemtoupdate["workorderItemPartRequestId"] = v8partrequestid;
v8poitemtoupdate["vendorPartNumber"] = null;
await util.PutAsync("purchase-order", dPO.ToString());
}
}
//##### WORKORDER ITEM LOANERS
foreach (WorkorderItemLoan wil in wi.Loans)
{
progress.SubOp("WorkorderItemLoan " + wil.ID.ToString());
dynamic dwil = new JObject();
dwil.workOrderId = RavenId;
dwil.workorderItemId = ravenwoitemid;
dwil.loanUnitId = Getv7v8IdMap(wil.LoanItemID, "loan unit for workorder");
dwil.outDate = util.DateToV8(wil.OutDate);
dwil.dueDate = util.DateToV8(wil.DueDate);
dwil.returnDate = util.DateToV8(wil.ReturnDate);
dwil.taxCodeId = Getv7v8IdMapNullOk(wil.TaxCodeID);
dwil.quantity = wil.Quantity;
switch (wil.Rate)
{
case LoanItemRates.Days:
dwil.rate = 3;
break;
case LoanItemRates.HalfDays:
dwil.rate = 2;
break;
case LoanItemRates.Hours:
dwil.rate = 1;
break;
case LoanItemRates.Months:
dwil.rate = 5;
break;
case LoanItemRates.None:
dwil.rate = 0;
break;
case LoanItemRates.Weeks:
dwil.rate = 4;
break;
case LoanItemRates.Years:
dwil.rate = 6;
break;
}
dwil.priceOverride = wil.Charges;
dwil.notes = wil.Notes;
await util.PostAsync("workorder/items/loans", dwil.ToString());
await util.PostAsync("quote/items/parts", dwip.ToString());
}
//##### WORKORDER ITEM LABOR
foreach (WorkorderItemLabor wl in wi.Labors)
{
progress.SubOp("WorkorderItemLabor " + wl.ID.ToString());
progress.SubOp("QuoteItemLabor " + wl.ID.ToString());
dynamic dwl = new JObject();
dwl.workOrderId = RavenId;
dwl.workorderItemId = ravenwoitemid;
dwl.quoteId = RavenId;
dwl.quoteItemId = ravenwoitemid;
//null is ok here for user
dwl.userId = Getv7v8IdMapNullOk(wl.UserID);
dwl.serviceStartDate = util.DateToV8(wl.ServiceStartDate);
@@ -3700,16 +3596,16 @@ namespace AyaNova.PlugIn.V8
dwl.serviceRateId = Getv7v8IdMapNullOk(wl.ServiceRateID);
dwl.serviceDetails = wl.ServiceDetails;
await util.PostAsync("workorder/items/labors", dwl.ToString());
await util.PostAsync("quote/items/labors", dwl.ToString());
}
//##### WORKORDER ITEM TRAVEL
foreach (WorkorderItemTravel wt in wi.Travels)
{
progress.SubOp("WorkorderItemTravel " + wt.ID.ToString());
progress.SubOp("QuoteItemTravel " + wt.ID.ToString());
dynamic dwt = new JObject();
dwt.workOrderId = RavenId;
dwt.workorderItemId = ravenwoitemid;
dwt.quoteId = RavenId;
dwt.quoteItemId = ravenwoitemid;
//null is ok here for user
dwt.userId = Getv7v8IdMapNullOk(wt.UserID);
dwt.travelStartDate = util.DateToV8(wt.TravelStartDate);
@@ -3720,18 +3616,18 @@ namespace AyaNova.PlugIn.V8
dwt.travelRateId = Getv7v8IdMapNullOk(wt.TravelRateID);
dwt.travelDetails = wt.TravelDetails;
dwt.distance = wt.Distance;
await util.PostAsync("workorder/items/travels", dwt.ToString());
await util.PostAsync("quote/items/travels", dwt.ToString());
}
//##### WORKORDER ITEM TASKS
int nTaskSequence = 0;
foreach (WorkorderItemTask wt in wi.Tasks)
{
progress.SubOp("WorkorderItemTask " + wt.ID.ToString());
progress.SubOp("QuoteItemTask " + wt.ID.ToString());
//var tg = TaskGroup.GetItem(wt.TaskGroupID);
dynamic dwt = new JObject();
dwt.workOrderId = RavenId;
dwt.workorderItemId = ravenwoitemid;
dwt.quoteId = RavenId;
dwt.quoteItemId = ravenwoitemid;
dwt.sequence = ++nTaskSequence;
var task = AllTasks[wt.TaskID];
dwt.task = task.Name;
@@ -3740,59 +3636,10 @@ namespace AyaNova.PlugIn.V8
//but could wing it if necessary for some reason
//dwt.completedByUserId = Getv7v8IdMapNullOk(wt.Modifier);
//dwt.completedDate=
await util.PostAsync("workorder/items/tasks", dwt.ToString());
await util.PostAsync("quote/items/tasks", dwt.ToString());
}
//##### WORKORDER ITEM EXPENSES
foreach (WorkorderItemMiscExpense we in wi.Expenses)
{
progress.SubOp("WorkorderItemExpense " + we.ID.ToString());
dynamic dwe = new JObject();
dwe.workOrderId = RavenId;
dwe.workorderItemId = ravenwoitemid;
dwe.description = we.Description;
dwe.name = we.Name;
dwe.totalCost = we.TotalCost;
dwe.chargeAmount = we.ChargeAmount;
dwe.taxPaid = we.TaxPaid;
dwe.chargeTaxCodeId = Getv7v8IdMapNullOk(we.ChargeTaxCodeID);
dwe.reimburseUser = we.ReimburseUser;
dwe.userId = Getv7v8IdMapNullOk(we.UserID);
dwe.chargeToCustomer = we.ChargeToClient;
await util.PostAsync("workorder/items/expenses", dwe.ToString());
}
//##### WORKORDER ITEM OUTSIDE SERVICE
if (wi.HasOutsideService)
{
//make sure we have a matching unit already
var ravUnitId = Getv7v8IdMapNullOk(wi.UnitID);
if (ravUnitId != null)
{
//we have a legit unit record, make it for v8
progress.SubOp("WorkorderItemOutsideService");
dynamic dwio = new JObject();
dwio.workOrderId = RavenId;
dwio.workorderItemId = ravenwoitemid;
dwio.unitId = ravUnitId;
dwio.notes = wi.OutsideService.Notes;
dwio.vendorSentToId = Getv7v8IdMapNullOk(wi.OutsideService.VendorSentToID);
dwio.vendorSentViaId = Getv7v8IdMapNullOk(wi.OutsideService.VendorSentViaID);
dwio.rMANumber = wi.OutsideService.RMANumber;
dwio.trackingNumber = wi.OutsideService.TrackingNumber;
dwio.repairCost = wi.OutsideService.RepairCost;
dwio.repairPrice = wi.OutsideService.RepairPrice;
dwio.shippingCost = wi.OutsideService.ShippingCost;
dwio.shippingPrice = wi.OutsideService.ShippingPrice;
dwio.sentDate = util.DateToV8(wi.OutsideService.DateSent);
dwio.eTADate = util.DateToV8(wi.OutsideService.DateETA);
dwio.returnDate = util.DateToV8(wi.OutsideService.DateReturned);
await util.PostAsync("workorder/items/outside-services", dwio.ToString());
}
}
}//items loop
}//wo loop