This commit is contained in:
2021-05-24 20:04:32 +00:00
parent 74c67e90fa
commit 2dc7af5823
10 changed files with 106 additions and 10 deletions

View File

@@ -898,6 +898,7 @@ namespace AyaNova.Biz
l.Add(new FormField { TKey = "WorkOrderItemExpenseList", FieldKey = "WorkOrderItemExpenseList", TKeySection = "WorkOrderItem", Requireable = false });
l.Add(new FormField { TKey = "WorkOrderItemLaborList", FieldKey = "WorkOrderItemLaborList", TKeySection = "WorkOrderItem", Requireable = false });
l.Add(new FormField { TKey = "WorkOrderItemTravelList", FieldKey = "WorkOrderItemTravelList", TKeySection = "WorkOrderItem", Requireable = false });
l.Add(new FormField { TKey = "WorkOrderItemTaskList", FieldKey = "WorkOrderItemTaskList", TKeySection = "WorkOrderItem", Requireable = false });
//WORKORDER ITEM SCHEDULED USER
l.Add(new FormField { TKey = "WorkOrderItemScheduledUserEstimatedQuantity", FieldKey = "WorkOrderItemScheduledUserEstimatedQuantity", TKeySection = "WorkOrderItemScheduledUser" });
@@ -959,6 +960,15 @@ namespace AyaNova.Biz
l.Add(new FormField { TKey = "LineTotal", FieldKey = "TravelLineTotalViz", TKeySection = "WorkOrderItemTravels" });
//WORKORDER ITEM TASKS
l.Add(new FormField { TKey = "Sequence", FieldKey = "WorkOrderItemTaskSequence", TKeySection = "WorkOrderItemTask" });
l.Add(new FormField { TKey = "WorkOrderItemTaskTaskID", FieldKey = "WorkOrderItemTaskTaskID", TKeySection = "WorkOrderItemTask" });
l.Add(new FormField { TKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType", FieldKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType", TKeySection = "WorkOrderItemTask" });
l.Add(new FormField { TKey = "WorkOrderItemTaskUser", FieldKey = "WorkOrderItemTaskUser", TKeySection = "WorkOrderItemTask" });
l.Add(new FormField { TKey = "WorkOrderItemTaskCompletedDate", FieldKey = "WorkOrderItemTaskCompletedDate", TKeySection = "WorkOrderItemTask" });
_formFields.Add(AyaType.WorkOrder.ToString(), l);
}

View File

@@ -729,6 +729,8 @@ namespace AyaNova.Biz
//
public async Task<JArray> GetReportData(long[] idList)
{
JArray ReportData = new JArray();
while (idList.Any())
{
@@ -741,6 +743,13 @@ namespace AyaNova.Biz
//order the results back into original
var orderedList = from id in batch join z in batchResults on id equals z.Id select z;
//TODO: ##HERE## SEE ContractBiz for example implementation; will need to pre-cache some translation keys for enum lists etc, for example:
// private async Task TaskPopulateVizFields(WorkOrderItemTask o, List<NameIdItem> taskCompletionTypeEnumList = null)
foreach (WorkOrder w in orderedList)
{
//populate entire workorder graph
@@ -3983,11 +3992,19 @@ namespace AyaNova.Biz
////////////////////////////////////////////////////////////////////////////////////////////////
//VIZ POPULATE
//
private async Task TaskPopulateVizFields(WorkOrderItemTask o)
private async Task TaskPopulateVizFields(WorkOrderItemTask o, List<NameIdItem> taskCompletionTypeEnumList = null)
{
await Task.CompletedTask;
// if (o.WorkOrderOverseerId != null)
// o.WorkOrderOverseerViz = await ct.User.AsNoTracking().Where(x => x.Id == o.WorkOrderOverseerId).Select(x => x.Name).FirstOrDefaultAsync();
if (o.CompletedByUserId != null)
o.CompletedByUserViz = await ct.User.AsNoTracking().Where(x => x.Id == o.CompletedByUserId).Select(x => x.Name).FirstOrDefaultAsync();
if (taskCompletionTypeEnumList == null)
taskCompletionTypeEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
StringUtil.TrimTypeName(typeof(WorkorderItemTaskCompletionType).ToString()),
UserTranslationId,
CurrentUserRoles);
o.StatusViz = taskCompletionTypeEnumList.Where(x => x.Id == (long)o.Status).Select(x => x.Name).First();
}
////////////////////////////////////////////////////////////////////////////////////////////////
@@ -4256,7 +4273,7 @@ namespace AyaNova.Biz
TravelRate Rate = null;
if (o.TravelRateId != null)
Rate = await ct.TravelRate.AsNoTracking().FirstOrDefaultAsync(x => x.Id == o.TravelRateId);
o.TravelRateViz=Rate.Name;
o.TravelRateViz = Rate.Name;
TaxCode Tax = null;
if (o.TaxCodeSaleId != null)
Tax = await ct.TaxCode.AsNoTracking().FirstOrDefaultAsync(z => z.Id == o.TaxCodeSaleId);

View File

@@ -12,12 +12,18 @@ namespace AyaNova.Models
public long Id { get; set; }
public uint Concurrency { get; set; }
public int DisplayOrder { get; set; } = 0;
//public int DisplayOrder { get; set; } = 0;
public int Sequence { get; set; }
[Required]
public string Task { get; set; }
[Required]
public WorkorderItemTaskCompletionType Status { get; set; } = WorkorderItemTaskCompletionType.Incomplete;
[NotMapped]
public string StatusViz { get; set; }
public long? CompletedByUserId { get; set; }
[NotMapped]
public string CompletedByUserViz { get; set; }
public DateTime? CompletedDate { get; set; }
//UTILITY FIELDS

View File

@@ -1566,6 +1566,8 @@
"WorkOrderItemTaskObject": "Arbeitsauftragsposten - Aufgabe",
"WorkOrderItemTaskTaskID": "Aufgabe",
"WorkOrderItemTaskWorkOrderItemTaskCompletionType": "Status",
"WorkOrderItemTaskUser":"Benutzer",
"WorkOrderItemTaskCompletedDate":"Fertigstellungstermin",
"WorkOrderItemTravelDistance": "Distanz",
"WorkOrderItemTravelList": "Reiseposten",
"WorkOrderItemTravelNoChargeQuantity": "Ohne Gebühren - Menge",

View File

@@ -1566,6 +1566,8 @@
"WorkOrderItemTaskObject": "WorkOrder item task",
"WorkOrderItemTaskTaskID": "Task",
"WorkOrderItemTaskWorkOrderItemTaskCompletionType": "Status",
"WorkOrderItemTaskUser":"User",
"WorkOrderItemTaskCompletedDate":"Completed",
"WorkOrderItemTravelDistance": "Distance",
"WorkOrderItemTravelList": "Travels",
"WorkOrderItemTravelNoChargeQuantity": "No Charge Quantity",

View File

@@ -1566,6 +1566,8 @@
"WorkOrderItemTaskObject": "Tarea elemento de pedido",
"WorkOrderItemTaskTaskID": "Tarea",
"WorkOrderItemTaskWorkOrderItemTaskCompletionType": "Estado",
"WorkOrderItemTaskUser":"Usuario",
"WorkOrderItemTaskCompletedDate":"Fecha completada",
"WorkOrderItemTravelDistance": "Distancia",
"WorkOrderItemTravelList": "Elementos desplazamiento",
"WorkOrderItemTravelNoChargeQuantity": "Cantidad sin cargo",

View File

@@ -1566,6 +1566,8 @@
"WorkOrderItemTaskObject": "Tâche d'élément de bon de travail",
"WorkOrderItemTaskTaskID": "Tâche",
"WorkOrderItemTaskWorkOrderItemTaskCompletionType": "État",
"WorkOrderItemTaskUser":"Utilisateur",
"WorkOrderItemTaskCompletedDate":"Date de fin",
"WorkOrderItemTravelDistance": "Distance",
"WorkOrderItemTravelList": "Éléments de déplacement",
"WorkOrderItemTravelNoChargeQuantity": "Quantité non facturée",

View File

@@ -816,7 +816,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
//WORKORDERITEM TASK
await ExecQueryAsync("CREATE TABLE aworkorderitemtask (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, workorderitemid BIGINT NOT NULL REFERENCES aworkorderitem (id), "
+ "displayorder INTEGER NOT NULL DEFAULT 0, task text NOT NULL, status INTEGER NOT NULL DEFAULT 1, completedbyuserid BIGINT REFERENCES auser, completeddate TIMESTAMP"
+ "sequence INTEGER NOT NULL DEFAULT 0, task text NOT NULL, status INTEGER NOT NULL DEFAULT 1, completedbyuserid BIGINT REFERENCES auser, completeddate TIMESTAMP"
+ ")");
//WORKORDERITEM TRAVEL

View File

@@ -2525,9 +2525,10 @@ namespace AyaNova.Util
//LABOR
var techId = RandomServiceTechUserId();
var woItemLabor = new WorkOrderItemLabor()
{
UserId = RandomServiceTechUserId(),
UserId = techId,
ServiceRateQuantity = 1,
ServiceStartDate = woDate,
ServiceStopDate = woDate.AddHours(1),
@@ -2552,7 +2553,7 @@ namespace AyaNova.Util
//TRAVEL
var woItemTravel = new WorkOrderItemTravel()
{
UserId = RandomServiceTechUserId(),
UserId = techId,
TravelRateQuantity = 1,
TravelStartDate = woDate,
TravelStopDate = woDate.AddHours(1),
@@ -2574,6 +2575,60 @@ namespace AyaNova.Util
};
woItem.Travels.Add(woItemTravel);
//TASKS
var woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Dis-assemble",
Sequence = 1,
Status = WorkorderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(1)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Lubricate",
Sequence = 2,
Status = WorkorderItemTaskCompletionType.NotApplicable,
CompletedDate = woDate.AddHours(1)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Repair",
Sequence = 3,
Status = WorkorderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(1.5)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Re-assemble",
Sequence = 4,
Status = WorkorderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(2)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Test and confirm repair",
Sequence = 5,
Status = WorkorderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(2)
};
woItem.Tasks.Add(woItemTask);
//EXPENSES
var cost = Fake.Random.Decimal(1, 10);