This commit is contained in:
2022-07-11 20:58:50 +00:00
parent 33b564ad63
commit 4dd2df03cf
9 changed files with 233 additions and 63 deletions

View File

@@ -250,7 +250,12 @@
<Compile Include="WorkOrderItemLoan.cs" />
<Compile Include="WorkOrderItemOutsideService.cs" />
<Compile Include="WorkOrderItemPart.cs" />
<Compile Include="WorkOrderItemPartRequest.cs" />
<Compile Include="WorkOrderItemScheduledUser.cs" />
<Compile Include="WorkOrderItemTask.cs" />
<Compile Include="WorkOrderItemTaskCompletionType.cs" />
<Compile Include="WorkOrderItemTravel.cs" />
<Compile Include="WorkOrderItemUnit.cs" />
<Compile Include="WorkOrderStatus.cs" />
<Compile Include="SetQBImportInventoryAccounts.cs">
<SubType>Form</SubType>

View File

@@ -561,8 +561,8 @@
//
this.workOrderItemTypeToolStripMenuItem.Name = "workOrderItemTypeToolStripMenuItem";
this.workOrderItemTypeToolStripMenuItem.Size = new System.Drawing.Size(231, 22);
this.workOrderItemTypeToolStripMenuItem.Tag = "~ITEM_TYPE~";
this.workOrderItemTypeToolStripMenuItem.Text = "Work order item type";
this.workOrderItemTypeToolStripMenuItem.Tag = "~ITEM_TAGS~";
this.workOrderItemTypeToolStripMenuItem.Text = "Work order item TAGS";
//
// workOrderItemRequestDateToolStripMenuItem
//

View File

@@ -47,11 +47,11 @@ namespace AyaNovaQBI
public List<WorkOrderItemLabor> Labors { get; set; } = new List<WorkOrderItemLabor>();
public List<WorkOrderItemLoan> Loans { get; set; } = new List<WorkOrderItemLoan>();
public List<WorkOrderItemPart> Parts { get; set; } = new List<WorkOrderItemPart>();
// public List<WorkOrderItemPartRequest> PartRequests { get; set; } = new List<WorkOrderItemPartRequest>();
// public List<WorkOrderItemScheduledUser> ScheduledUsers { get; set; } = new List<WorkOrderItemScheduledUser>();
// public List<WorkOrderItemTask> Tasks { get; set; } = new List<WorkOrderItemTask>();
public List<WorkOrderItemPartRequest> PartRequests { get; set; } = new List<WorkOrderItemPartRequest>();
public List<WorkOrderItemScheduledUser> ScheduledUsers { get; set; } = new List<WorkOrderItemScheduledUser>();
public List<WorkOrderItemTask> Tasks { get; set; } = new List<WorkOrderItemTask>();
public List<WorkOrderItemTravel> Travels { get; set; } = new List<WorkOrderItemTravel>();
// public List<WorkOrderItemUnit> Units { get; set; } = new List<WorkOrderItemUnit>();
public List<WorkOrderItemUnit> Units { get; set; } = new List<WorkOrderItemUnit>();
public List<WorkOrderItemOutsideService> OutsideServices { get; set; } = new List<WorkOrderItemOutsideService>();
}
}

View File

@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AyaNovaQBI
{
public class WorkOrderItemPartRequest
{
public long Id { get; set; }
public uint Concurrency { get; set; }
public long WorkOrderItemId { get; set; }
public long PartId { get; set; }
public long PartWarehouseId { get; set; }
public decimal Quantity { get; set; }
public long? PurchaseOrderItemId { get; set; }
public long? RequestedByUserId { get; set; }
public decimal Received { get; set; }
public DateTime RequestDate { get; set; } = DateTime.UtcNow;
public string PartNameViz { get; set; }
public string PartDescriptionViz { get; set; }
public string UpcViz { get; set; }
public string RequestedByUserViz { get; set; }
public string PurchaseOrderViz { get; set; }
public long? PurchaseOrderIdViz { get; set; }
public DateTime? PurchaseOrderDateViz { get; set; }
public DateTime? PurchaseOrderExpectedDateViz { get; set; }
public string PartWarehouseViz { get; set; }
}
}

View File

@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AyaNovaQBI
{
public class WorkOrderItemScheduledUser
{
public long Id { get; set; }
public uint Concurrency { get; set; }
public long? UserId { get; set; }
public string UserViz { get; set; }
public decimal EstimatedQuantity { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? StopDate { get; set; }
public long? ServiceRateId { get; set; }
public string ServiceRateViz { get; set; }
public long WorkOrderItemId { get; set; }
}//eoc
}

View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AyaNovaQBI
{
public class WorkOrderItemTask
{
public long Id { get; set; }
public uint Concurrency { get; set; }
public int Sequence { get; set; }
public string Task { get; set; }
public WorkOrderItemTaskCompletionType Status { get; set; } = WorkOrderItemTaskCompletionType.Incomplete;
public string StatusViz { get; set; }
public long? CompletedByUserId { get; set; }
public string CompletedByUserViz { get; set; }
public DateTime? CompletedDate { get; set; }
public long WorkOrderItemId { get; set; }
}//eoc
}

View File

@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AyaNovaQBI
{/// <summary>
/// Indicates status of task
/// </summary>
public enum WorkOrderItemTaskCompletionType : int
{
/// <summary>
/// Not finished
/// </summary>
Incomplete = 1,
/// <summary>
/// Finished
/// </summary>
Complete = 2,
/// <summary>
/// Not relevant
/// </summary>
NotApplicable = 3,
Failed = 4
}
}

View File

@@ -0,0 +1,32 @@
using System.Collections.Generic;
namespace AyaNovaQBI
{
public class WorkOrderItemUnit
{
public long Id { get; set; }
public uint Concurrency { get; set; }
public string Notes { get; set; }
public string Wiki { get; set; }
public string CustomFields { get; set; }
public List<string> Tags { get; set; } = new List<string>();
public long UnitId { get; set; }
public string UnitViz { get; set; }
public long WorkOrderItemId { get; set; }
public string UnitModelNameViz { get; set; }
public string UnitModelVendorViz { get; set; }
public string UnitDescriptionViz { get; set; }
public bool UnitMeteredViz { get; set; }
//PHYSICAL ADDRESS
public string AddressViz { get; set; }
public string CityViz { get; set; }
public string RegionViz { get; set; }
public string CountryViz { get; set; }
public decimal? LatitudeViz { get; set; }
public decimal? LongitudeViz { get; set; }
}//eoc
}

View File

@@ -6118,6 +6118,8 @@ namespace AyaNovaQBI
throw new Exception($"util.Invoice: WorkOrder with record id {SelectedWorkOrderId} was not found in AyaNova and may have just been deleted.\r\nUnable to invoice this wo.");
var OrderedWorkOrderItems = w.Items.OrderBy(z => z.Sequence).ToList();
if (bFirstLoop)
{
bFirstLoop = false;
@@ -6214,7 +6216,7 @@ namespace AyaNovaQBI
#endregion header text
#region Part charges
foreach (var it in w.Items)
foreach (var it in OrderedWorkOrderItems)
{
foreach (var p in it.Parts)
{
@@ -6229,7 +6231,7 @@ namespace AyaNovaQBI
#endregion part charges
#region Service charges
foreach (var it in w.Items)
foreach (var it in OrderedWorkOrderItems)
{
foreach (var l in it.Labors)
{
@@ -6250,7 +6252,7 @@ namespace AyaNovaQBI
#endregion Service charges
#region Travel charges
foreach (var it in w.Items)
foreach (var it in OrderedWorkOrderItems)
{
foreach (var l in it.Travels)
{
@@ -6263,7 +6265,7 @@ namespace AyaNovaQBI
#endregion Travel charges
#region MiscExpense charges
foreach (var it in w.Items)
foreach (var it in OrderedWorkOrderItems)
{
foreach (var l in it.Expenses)
{
@@ -6277,7 +6279,7 @@ namespace AyaNovaQBI
#endregion MiscExpense charges
#region Loaner charges
foreach (var it in w.Items)
foreach (var it in OrderedWorkOrderItems)
{
foreach (var l in it.Loans)
{
@@ -6288,7 +6290,7 @@ namespace AyaNovaQBI
#endregion Loaner charges
#region OutsideService charges
foreach (var it in w.Items)
foreach (var it in OrderedWorkOrderItems)
{
foreach (var os in it.OutsideServices)
{
@@ -6304,7 +6306,7 @@ namespace AyaNovaQBI
//inserting descriptive text as required
if (QDat.HasAnyInvoiceFooterTemplateFields)
{
foreach (var it in w.Items)
foreach (var it in OrderedWorkOrderItems)
{
#region Item (footer) fields
if (!string.IsNullOrWhiteSpace(QDat.InvoiceFooterTemplate))
@@ -6313,7 +6315,7 @@ namespace AyaNovaQBI
if (s.IndexOf("~ITEM_SUMMARY~") != -1)
{
s = s.Replace("~ITEM_SUMMARY~", it.Summary);
s = s.Replace("~ITEM_SUMMARY~", it.Notes);
}
if (s.IndexOf("~ITEM_SERVICE_NOTES~") != -1)
@@ -6321,12 +6323,9 @@ namespace AyaNovaQBI
s = s.Replace("~ITEM_SERVICE_NOTES~", it.TechNotes);
}
if (s.IndexOf("~ITEM_TYPE~") != -1)
if (s.IndexOf("~ITEM_TAGS~") != -1)
{
if (it.TypeID == Guid.Empty)
s = s.Replace("~ITEM_TYPE~", "");
else
s = s.Replace("~ITEM_TYPE~", NameFetcher.GetItem("aWorkorderItemType", "aName", it.TypeID).RecordName);
s = s.Replace("~ITEM_TAGS~", String.Join(",", it.Tags));
}
if (s.IndexOf("~ITEM_REQUEST_DATE~") != -1)
@@ -6336,10 +6335,7 @@ namespace AyaNovaQBI
if (s.IndexOf("~ITEM_STATUS~") != -1)
{
if (it.WorkorderStatusID == Guid.Empty)
s = s.Replace("~ITEM_STATUS~", "");
else
s = s.Replace("~ITEM_STATUS~", NameFetcher.GetItem("aWorkorderStatus", "aName", it.WorkorderStatusID).RecordName);
s = s.Replace("~ITEM_STATUS~", it.WorkOrderItemStatusNameViz);
}
InvoiceAddText(i, s);
@@ -6349,48 +6345,50 @@ namespace AyaNovaQBI
#region Unit fields
if (!string.IsNullOrWhiteSpace(QDat.InvoiceUnitTemplate))
{
TODO: LOOPIFY THIS BLOCK TO NEW STANDARD
string s = QDat.InvoiceUnitTemplate;
UnitPickList up = UnitPickList.GetListOfOneSpecificUnit(it.UnitID);
if (s.IndexOf("~AYAFORMAT~") != -1)
foreach (var u in it.units)
{
s = s.Replace("~AYAFORMAT~", up[0].UnitName());
string s = QDat.InvoiceUnitTemplate;
UnitPickList up = UnitPickList.GetListOfOneSpecificUnit(it.UnitID);
if (s.IndexOf("~AYAFORMAT~") != -1)
{
s = s.Replace("~AYAFORMAT~", up[0].UnitName());
}
if (s.IndexOf("~UNIT_SN~") != -1)
{
s = s.Replace("~UNIT_SN~", up[0].Serial);
}
if (s.IndexOf("~UNIT_METER~") != -1)
{
if (!up[0].Metered)
s = s.Replace("~UNIT_METER~", "");
else
s = s.Replace("~UNIT_METER~", Unit.LastMeterReading(up[0].ID).ToString());
}
if (s.IndexOf("~UNIT_MAKE~") != -1)
{
s = s.Replace("~UNIT_MAKE~", up[0].VendorName);
}
if (s.IndexOf("~UNIT_MODEL_NAME~") != -1)
{
s = s.Replace("~UNIT_MODEL_NAME~", up[0].ModelName);
}
if (s.IndexOf("~UNIT_MODEL_NUMBER~") != -1)
{
s = s.Replace("~UNIT_MODEL_NUMBER~", up[0].ModelNumber);
}
InvoiceAddText(i, s);
}
if (s.IndexOf("~UNIT_SN~") != -1)
{
s = s.Replace("~UNIT_SN~", up[0].Serial);
}
if (s.IndexOf("~UNIT_METER~") != -1)
{
if (!up[0].Metered)
s = s.Replace("~UNIT_METER~", "");
else
s = s.Replace("~UNIT_METER~", Unit.LastMeterReading(up[0].ID).ToString());
}
if (s.IndexOf("~UNIT_MAKE~") != -1)
{
s = s.Replace("~UNIT_MAKE~", up[0].VendorName);
}
if (s.IndexOf("~UNIT_MODEL_NAME~") != -1)
{
s = s.Replace("~UNIT_MODEL_NAME~", up[0].ModelName);
}
if (s.IndexOf("~UNIT_MODEL_NUMBER~") != -1)
{
s = s.Replace("~UNIT_MODEL_NUMBER~", up[0].ModelNumber);
}
InvoiceAddText(i, s);
}
#endregion unit