This commit is contained in:
@@ -3482,9 +3482,9 @@ namespace AyaNova.PlugIn.V8
|
|||||||
foreach (WorkorderItem wi in c.WorkorderItems)
|
foreach (WorkorderItem wi in c.WorkorderItems)
|
||||||
{
|
{
|
||||||
List<string> witags = new List<string>();
|
List<string> witags = new List<string>();
|
||||||
progress.SubOp("WorkorderItem " + wi.ID.ToString());
|
progress.SubOp("QuoteItem " + wi.ID.ToString());
|
||||||
dynamic dwi = new JObject();
|
dynamic dwi = new JObject();
|
||||||
dwi.workOrderId = RavenId;
|
dwi.quoteId = RavenId;
|
||||||
dwi.sequence = ++nSequence;
|
dwi.sequence = ++nSequence;
|
||||||
if (!string.IsNullOrWhiteSpace(wi.Summary))//in v8 summary is reqd.
|
if (!string.IsNullOrWhiteSpace(wi.Summary))//in v8 summary is reqd.
|
||||||
dwi.notes = wi.Summary;
|
dwi.notes = wi.Summary;
|
||||||
@@ -3505,7 +3505,7 @@ namespace AyaNova.PlugIn.V8
|
|||||||
dwi.customFields = CustomFieldData(wi, DateCustomFields);
|
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);
|
await util.EventLog(util.AyaType.WorkOrderItem, ravenwoitemid, SafeGetUserMap(wi.Creator), SafeGetUserMap(wi.Modifier), wi.Created, wi.Modified);
|
||||||
|
|
||||||
//##### WORKORDER ITEM UNIT
|
//##### WORKORDER ITEM UNIT
|
||||||
@@ -3517,15 +3517,15 @@ namespace AyaNova.PlugIn.V8
|
|||||||
if (ravUnitId != null)
|
if (ravUnitId != null)
|
||||||
{
|
{
|
||||||
//we have a legit unit record, make it for v8
|
//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();
|
dynamic dwiu = new JObject();
|
||||||
dwiu.workOrderId = RavenId;
|
dwiu.quoteId = RavenId;
|
||||||
dwiu.workorderItemId = ravenwoitemid;
|
dwiu.quoteItemId = ravenwoitemid;
|
||||||
dwiu.unitId = ravUnitId;
|
dwiu.unitId = ravUnitId;
|
||||||
List<string> wiutags = new List<string>();
|
List<string> wiutags = new List<string>();
|
||||||
TagFromv7Guid(wi.WorkorderItemUnitServiceTypeID, wiutags);
|
TagFromv7Guid(wi.WorkorderItemUnitServiceTypeID, wiutags);
|
||||||
SetTags(dwiu, 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
|
//##### WORKORDER ITEM SCHEDULED USER
|
||||||
foreach (WorkorderItemScheduledUser wisu in wi.ScheduledUsers)
|
foreach (WorkorderItemScheduledUser wisu in wi.ScheduledUsers)
|
||||||
{
|
{
|
||||||
progress.SubOp("WorkorderItemScheduledUser " + wisu.ID.ToString());
|
progress.SubOp("QuoteItemScheduledUser " + wisu.ID.ToString());
|
||||||
dynamic dwisu = new JObject();
|
dynamic dwisu = new JObject();
|
||||||
dwisu.workOrderId = RavenId;
|
dwisu.quoteId = RavenId;
|
||||||
dwisu.workorderItemId = ravenwoitemid;
|
dwisu.quoteItemId = ravenwoitemid;
|
||||||
//null is ok here for a sched user
|
//null is ok here for a sched user
|
||||||
dwisu.userId = Getv7v8IdMapNullOk(wisu.UserID);
|
dwisu.userId = Getv7v8IdMapNullOk(wisu.UserID);
|
||||||
dwisu.startDate = util.DateToV8(wisu.StartDate);
|
dwisu.startDate = util.DateToV8(wisu.StartDate);
|
||||||
dwisu.stopDate = util.DateToV8(wisu.StopDate);
|
dwisu.stopDate = util.DateToV8(wisu.StopDate);
|
||||||
dwisu.estimatedQuantity = wisu.EstimatedQuantity;
|
dwisu.estimatedQuantity = wisu.EstimatedQuantity;
|
||||||
dwisu.serviceRateId = Getv7v8IdMapNullOk(wisu.ServiceRateID);
|
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
|
//##### WORKORDER ITEM PART
|
||||||
foreach (WorkorderItemPart wip in wi.Parts)
|
foreach (WorkorderItemPart wip in wi.Parts)
|
||||||
{
|
{
|
||||||
progress.SubOp("WorkorderItemPart " + wip.ID.ToString());
|
progress.SubOp("QuoteItemPart " + wip.ID.ToString());
|
||||||
dynamic dwip = new JObject();
|
dynamic dwip = new JObject();
|
||||||
dwip.workOrderId = RavenId;
|
dwip.quoteId = RavenId;
|
||||||
dwip.workorderItemId = ravenwoitemid;
|
dwip.quoteItemId = ravenwoitemid;
|
||||||
dwip.quantity = wip.Quantity;
|
dwip.quantity = wip.Quantity;
|
||||||
var tryPartId = Getv7v8IdMapNullOk(wip.PartID);
|
var tryPartId = Getv7v8IdMapNullOk(wip.PartID);
|
||||||
if (tryPartId == null)
|
if (tryPartId == null)
|
||||||
@@ -3574,122 +3574,18 @@ namespace AyaNova.PlugIn.V8
|
|||||||
dwip.description = wip.Description;
|
dwip.description = wip.Description;
|
||||||
if (wip.PartSerialID != Guid.Empty)
|
if (wip.PartSerialID != Guid.Empty)
|
||||||
dwip.serials = PartSerial.GetSerialNumberFromPartSerialID(wip.PartSerialID);
|
dwip.serials = PartSerial.GetSerialNumberFromPartSerialID(wip.PartSerialID);
|
||||||
await util.PostAsync("workorder/items/parts", dwip.ToString());
|
await util.PostAsync("quote/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());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//##### WORKORDER ITEM LABOR
|
//##### WORKORDER ITEM LABOR
|
||||||
foreach (WorkorderItemLabor wl in wi.Labors)
|
foreach (WorkorderItemLabor wl in wi.Labors)
|
||||||
{
|
{
|
||||||
progress.SubOp("WorkorderItemLabor " + wl.ID.ToString());
|
progress.SubOp("QuoteItemLabor " + wl.ID.ToString());
|
||||||
dynamic dwl = new JObject();
|
dynamic dwl = new JObject();
|
||||||
dwl.workOrderId = RavenId;
|
dwl.quoteId = RavenId;
|
||||||
dwl.workorderItemId = ravenwoitemid;
|
dwl.quoteItemId = ravenwoitemid;
|
||||||
//null is ok here for user
|
//null is ok here for user
|
||||||
dwl.userId = Getv7v8IdMapNullOk(wl.UserID);
|
dwl.userId = Getv7v8IdMapNullOk(wl.UserID);
|
||||||
dwl.serviceStartDate = util.DateToV8(wl.ServiceStartDate);
|
dwl.serviceStartDate = util.DateToV8(wl.ServiceStartDate);
|
||||||
@@ -3700,16 +3596,16 @@ namespace AyaNova.PlugIn.V8
|
|||||||
dwl.serviceRateId = Getv7v8IdMapNullOk(wl.ServiceRateID);
|
dwl.serviceRateId = Getv7v8IdMapNullOk(wl.ServiceRateID);
|
||||||
dwl.serviceDetails = wl.ServiceDetails;
|
dwl.serviceDetails = wl.ServiceDetails;
|
||||||
|
|
||||||
await util.PostAsync("workorder/items/labors", dwl.ToString());
|
await util.PostAsync("quote/items/labors", dwl.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
//##### WORKORDER ITEM TRAVEL
|
//##### WORKORDER ITEM TRAVEL
|
||||||
foreach (WorkorderItemTravel wt in wi.Travels)
|
foreach (WorkorderItemTravel wt in wi.Travels)
|
||||||
{
|
{
|
||||||
progress.SubOp("WorkorderItemTravel " + wt.ID.ToString());
|
progress.SubOp("QuoteItemTravel " + wt.ID.ToString());
|
||||||
dynamic dwt = new JObject();
|
dynamic dwt = new JObject();
|
||||||
dwt.workOrderId = RavenId;
|
dwt.quoteId = RavenId;
|
||||||
dwt.workorderItemId = ravenwoitemid;
|
dwt.quoteItemId = ravenwoitemid;
|
||||||
//null is ok here for user
|
//null is ok here for user
|
||||||
dwt.userId = Getv7v8IdMapNullOk(wt.UserID);
|
dwt.userId = Getv7v8IdMapNullOk(wt.UserID);
|
||||||
dwt.travelStartDate = util.DateToV8(wt.TravelStartDate);
|
dwt.travelStartDate = util.DateToV8(wt.TravelStartDate);
|
||||||
@@ -3720,18 +3616,18 @@ namespace AyaNova.PlugIn.V8
|
|||||||
dwt.travelRateId = Getv7v8IdMapNullOk(wt.TravelRateID);
|
dwt.travelRateId = Getv7v8IdMapNullOk(wt.TravelRateID);
|
||||||
dwt.travelDetails = wt.TravelDetails;
|
dwt.travelDetails = wt.TravelDetails;
|
||||||
dwt.distance = wt.Distance;
|
dwt.distance = wt.Distance;
|
||||||
await util.PostAsync("workorder/items/travels", dwt.ToString());
|
await util.PostAsync("quote/items/travels", dwt.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
//##### WORKORDER ITEM TASKS
|
//##### WORKORDER ITEM TASKS
|
||||||
int nTaskSequence = 0;
|
int nTaskSequence = 0;
|
||||||
foreach (WorkorderItemTask wt in wi.Tasks)
|
foreach (WorkorderItemTask wt in wi.Tasks)
|
||||||
{
|
{
|
||||||
progress.SubOp("WorkorderItemTask " + wt.ID.ToString());
|
progress.SubOp("QuoteItemTask " + wt.ID.ToString());
|
||||||
//var tg = TaskGroup.GetItem(wt.TaskGroupID);
|
//var tg = TaskGroup.GetItem(wt.TaskGroupID);
|
||||||
dynamic dwt = new JObject();
|
dynamic dwt = new JObject();
|
||||||
dwt.workOrderId = RavenId;
|
dwt.quoteId = RavenId;
|
||||||
dwt.workorderItemId = ravenwoitemid;
|
dwt.quoteItemId = ravenwoitemid;
|
||||||
dwt.sequence = ++nTaskSequence;
|
dwt.sequence = ++nTaskSequence;
|
||||||
var task = AllTasks[wt.TaskID];
|
var task = AllTasks[wt.TaskID];
|
||||||
dwt.task = task.Name;
|
dwt.task = task.Name;
|
||||||
@@ -3740,59 +3636,10 @@ namespace AyaNova.PlugIn.V8
|
|||||||
//but could wing it if necessary for some reason
|
//but could wing it if necessary for some reason
|
||||||
//dwt.completedByUserId = Getv7v8IdMapNullOk(wt.Modifier);
|
//dwt.completedByUserId = Getv7v8IdMapNullOk(wt.Modifier);
|
||||||
//dwt.completedDate=
|
//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
|
}//items loop
|
||||||
}//wo loop
|
}//wo loop
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user