This commit is contained in:
2021-10-18 21:40:27 +00:00
parent 46e85bf928
commit 915f50a2ec

View File

@@ -445,7 +445,7 @@ namespace AyaNova.Util
await SeedPartAsync(log, 10000, 6000); await SeedPartAsync(log, 10000, 6000);
await SeedPartAssemblyAsync(log, 500); await SeedPartAssemblyAsync(log, 500);
await SeedPurchaseOrderAsync(log, 1000); await SeedPurchaseOrderAsync(log, 1000);
await SeedQuoteAsync(log, 1000); await SeedQuoteAsync(log, 10);
await SeedPMAsync(log, 3);//DO NOT want too many of these as they affect performance await SeedPMAsync(log, 3);//DO NOT want too many of these as they affect performance
await SeedWorkOrderAsync(log, 3600, slevel); await SeedWorkOrderAsync(log, 3600, slevel);
@@ -2853,8 +2853,7 @@ namespace AyaNova.Util
} }
//SCHEDULED USERS //SCHEDULED USERS
//not realistic, just to fill schedule forms with a nice even distribution for (int a = 0; a < woItemCount; a++)//woItemCount works here
//four random techs plus a few others of known type
{ {
var randomStart = Fake.Random.Int(0, 5); var randomStart = Fake.Random.Int(0, 5);
var randomHours = Fake.Random.Int(1, 4); var randomHours = Fake.Random.Int(1, 4);
@@ -2870,94 +2869,94 @@ namespace AyaNova.Util
woItem.ScheduledUsers.Add(woItemScheduledUser); woItem.ScheduledUsers.Add(woItemScheduledUser);
} }
{ // {
var randomStart = Fake.Random.Int(0, 5); // var randomStart = Fake.Random.Int(0, 5);
var randomHours = Fake.Random.Int(1, 4); // var randomHours = Fake.Random.Int(1, 4);
var randomDays = Fake.Random.Int(0, 3); // var randomDays = Fake.Random.Int(0, 3);
var randomStop = randomStart + randomHours; // var randomStop = randomStart + randomHours;
var woItemScheduledUser = new WorkOrderItemScheduledUser() // var woItemScheduledUser = new WorkOrderItemScheduledUser()
{ // {
UserId = RandomServiceTechUserId(), // UserId = RandomServiceTechUserId(),
EstimatedQuantity = randomHours, // EstimatedQuantity = randomHours,
StartDate = woDate.AddHours(randomStart).AddDays(randomDays), // StartDate = woDate.AddHours(randomStart).AddDays(randomDays),
StopDate = woDate.AddHours(randomStop).AddDays(randomDays) // StopDate = woDate.AddHours(randomStop).AddDays(randomDays)
}; // };
woItem.ScheduledUsers.Add(woItemScheduledUser); // woItem.ScheduledUsers.Add(woItemScheduledUser);
} // }
{ // {
var randomStart = Fake.Random.Int(0, 5); // var randomStart = Fake.Random.Int(0, 5);
var randomHours = Fake.Random.Int(1, 4); // var randomHours = Fake.Random.Int(1, 4);
var randomDays = Fake.Random.Int(0, 3); // var randomDays = Fake.Random.Int(0, 3);
var randomStop = randomStart + randomHours; // var randomStop = randomStart + randomHours;
var woItemScheduledUser = new WorkOrderItemScheduledUser() // var woItemScheduledUser = new WorkOrderItemScheduledUser()
{ // {
UserId = RandomServiceTechUserId(), // UserId = RandomServiceTechUserId(),
EstimatedQuantity = randomHours, // EstimatedQuantity = randomHours,
StartDate = woDate.AddHours(randomStart).AddDays(randomDays), // StartDate = woDate.AddHours(randomStart).AddDays(randomDays),
StopDate = woDate.AddHours(randomStop).AddDays(randomDays) // StopDate = woDate.AddHours(randomStop).AddDays(randomDays)
}; // };
woItem.ScheduledUsers.Add(woItemScheduledUser); // woItem.ScheduledUsers.Add(woItemScheduledUser);
} // }
{ // {
var randomStart = Fake.Random.Int(0, 5); // var randomStart = Fake.Random.Int(0, 5);
var randomHours = Fake.Random.Int(1, 4); // var randomHours = Fake.Random.Int(1, 4);
var randomDays = Fake.Random.Int(0, 3); // var randomDays = Fake.Random.Int(0, 3);
var randomStop = randomStart + randomHours; // var randomStop = randomStart + randomHours;
var woItemScheduledUser = new WorkOrderItemScheduledUser() // var woItemScheduledUser = new WorkOrderItemScheduledUser()
{ // {
UserId = RandomServiceTechUserId(), // UserId = RandomServiceTechUserId(),
EstimatedQuantity = randomHours, // EstimatedQuantity = randomHours,
StartDate = woDate.AddHours(randomStart).AddDays(randomDays), // StartDate = woDate.AddHours(randomStart).AddDays(randomDays),
StopDate = woDate.AddHours(randomStop).AddDays(randomDays) // StopDate = woDate.AddHours(randomStop).AddDays(randomDays)
}; // };
woItem.ScheduledUsers.Add(woItemScheduledUser); // woItem.ScheduledUsers.Add(woItemScheduledUser);
} // }
if (y == 1) // if (y == 1)
{ // {
//known tech and subcontractor on every item // //known tech and subcontractor on every item
var woItemScheduledUser = new WorkOrderItemScheduledUser() // var woItemScheduledUser = new WorkOrderItemScheduledUser()
{ // {
UserId = KnownUserTechId, // UserId = KnownUserTechId,
EstimatedQuantity = 2, // EstimatedQuantity = 2,
StartDate = woDate, // StartDate = woDate,
StopDate = woDate.AddHours(2) // StopDate = woDate.AddHours(2)
}; // };
woItem.ScheduledUsers.Add(woItemScheduledUser); // woItem.ScheduledUsers.Add(woItemScheduledUser);
woItemScheduledUser = new WorkOrderItemScheduledUser() // woItemScheduledUser = new WorkOrderItemScheduledUser()
{ // {
UserId = KnownUserSubContractorId, // UserId = KnownUserSubContractorId,
EstimatedQuantity = 2, // EstimatedQuantity = 2,
StartDate = woDate, // StartDate = woDate,
StopDate = woDate.AddHours(2) // StopDate = woDate.AddHours(2)
}; // };
woItem.ScheduledUsers.Add(woItemScheduledUser); // woItem.ScheduledUsers.Add(woItemScheduledUser);
} // }
if (y == 3) // if (y == 3)
{ // {
//known restricted tech and subcontractor on some items // //known restricted tech and subcontractor on some items
var woItemScheduledUser = new WorkOrderItemScheduledUser() // var woItemScheduledUser = new WorkOrderItemScheduledUser()
{ // {
UserId = KnownUserTechRestrictedId, // UserId = KnownUserTechRestrictedId,
EstimatedQuantity = 2, // EstimatedQuantity = 2,
StartDate = woDate, // StartDate = woDate,
StopDate = woDate.AddHours(2) // StopDate = woDate.AddHours(2)
}; // };
woItem.ScheduledUsers.Add(woItemScheduledUser); // woItem.ScheduledUsers.Add(woItemScheduledUser);
woItemScheduledUser = new WorkOrderItemScheduledUser() // woItemScheduledUser = new WorkOrderItemScheduledUser()
{ // {
UserId = KnownUserSubContractorRestrictedId, // UserId = KnownUserSubContractorRestrictedId,
EstimatedQuantity = 2, // EstimatedQuantity = 2,
StartDate = woDate, // StartDate = woDate,
StopDate = woDate.AddHours(2) // StopDate = woDate.AddHours(2)
}; // };
woItem.ScheduledUsers.Add(woItemScheduledUser); // woItem.ScheduledUsers.Add(woItemScheduledUser);
} // }
///////////////////////////////////////// /////////////////////////////////////////
//PARTS //PARTS
@@ -2979,47 +2978,35 @@ namespace AyaNova.Util
}; };
woItem.Parts.Add(woItemPart); woItem.Parts.Add(woItemPart);
//PARTREQUESTS //PARTREQUESTS
var woItemPartRequest = new WorkOrderItemPartRequest() if (Fake.Random.Bool())//50%
{ {
var woItemPartRequest = new WorkOrderItemPartRequest()
{
Quantity = 1, Quantity = 1,
PartId = Fake.Random.Long(1, TotalSeededParts), PartId = Fake.Random.Long(1, TotalSeededParts),
PartWarehouseId = 1, PartWarehouseId = 1,
PurchaseOrderItemId = Fake.Random.Long(1, TotalSeededPurchaseOrders)//yes it's POITEM vs po but each po has at least one item so this will work PurchaseOrderItemId = Fake.Random.Long(1, TotalSeededPurchaseOrders)//yes it's POITEM vs po but each po has at least one item so this will work
}; };
woItem.PartRequests.Add(woItemPartRequest); woItem.PartRequests.Add(woItemPartRequest);
}
woItemPartRequest = new WorkOrderItemPartRequest()
//LOANERS
if (Fake.Random.Bool())//50%
{ {
var woItemLoan = new WorkOrderItemLoan()
{
OutDate = woDate.AddHours(1),
DueDate = woDate.AddHours(4),
Quantity = 4,
Rate = LoanUnitRateUnit.Hours,
LoanUnitId = Fake.Random.Long(1, TotalSeededLoanUnits)
};
woItem.Loans.Add(woItemLoan);
}
Quantity = 1,
PartId = Fake.Random.Long(1, TotalSeededParts),
PartWarehouseId = 1
};
woItem.PartRequests.Add(woItemPartRequest);
//LOANERS
var woItemLoan = new WorkOrderItemLoan()
{
OutDate = woDate.AddHours(1),
DueDate = woDate.AddHours(4),
Quantity = 4,
Rate = LoanUnitRateUnit.Hours,
LoanUnitId = Fake.Random.Long(1, TotalSeededLoanUnits)
};
woItem.Loans.Add(woItemLoan);
woItemLoan = new WorkOrderItemLoan()
{
OutDate = woDate.AddHours(2),
DueDate = woDate.AddHours(3),
Quantity = 1,
Rate = LoanUnitRateUnit.Hours,
LoanUnitId = Fake.Random.Long(1, TotalSeededLoanUnits)
};
woItem.Loans.Add(woItemLoan);
//LABOR //LABOR
@@ -3034,217 +3021,229 @@ namespace AyaNova.Util
ServiceDetails = Fake.Lorem.Sentence() ServiceDetails = Fake.Lorem.Sentence()
}; };
woItem.Labors.Add(woItemLabor); woItem.Labors.Add(woItemLabor);
if (Fake.Random.Bool())//50%
woItemLabor = new WorkOrderItemLabor()
{ {
UserId = RandomServiceTechUserId(), woItemLabor = new WorkOrderItemLabor()
ServiceRateQuantity = 2, {
ServiceStartDate = woDate, UserId = RandomServiceTechUserId(),
ServiceStopDate = woDate.AddHours(1), ServiceRateQuantity = 2,
ServiceRateId = Fake.Random.Long(1, TotalSeededServiceRates), ServiceStartDate = woDate,
ServiceDetails = Fake.Lorem.Sentence() ServiceStopDate = woDate.AddHours(1),
}; ServiceRateId = Fake.Random.Long(1, TotalSeededServiceRates),
woItem.Labors.Add(woItemLabor); ServiceDetails = Fake.Lorem.Sentence()
};
woItem.Labors.Add(woItemLabor);
}
//TRAVEL //TRAVEL
var woItemTravel = new WorkOrderItemTravel() if (Fake.Random.Bool())//50%
{ {
UserId = techId, var woItemTravel = new WorkOrderItemTravel()
TravelRateQuantity = 1, {
TravelStartDate = woDate, UserId = techId,
TravelStopDate = woDate.AddHours(1), TravelRateQuantity = 1,
TravelRateId = Fake.Random.Long(1, TotalSeededTravelRates), TravelStartDate = woDate,
TravelDetails = Fake.Lorem.Sentence(), TravelStopDate = woDate.AddHours(1),
Distance = Fake.Random.Int(1, 20) TravelRateId = Fake.Random.Long(1, TotalSeededTravelRates),
}; TravelDetails = Fake.Lorem.Sentence(),
woItem.Travels.Add(woItemTravel); Distance = Fake.Random.Int(1, 20)
};
woItemTravel = new WorkOrderItemTravel() woItem.Travels.Add(woItemTravel);
{ }
UserId = RandomServiceTechUserId(),
TravelRateQuantity = 2,
TravelStartDate = woDate,
TravelStopDate = woDate.AddHours(1),
TravelRateId = Fake.Random.Long(1, TotalSeededTravelRates),
TravelDetails = Fake.Lorem.Sentence(),
Distance = Fake.Random.Int(1, 20)
};
woItem.Travels.Add(woItemTravel);
//TASKS //TASKS
var woItemTask = new WorkOrderItemTask() if (Fake.Random.Int(1, 4) == 2)//25% chance of task
{ {
CompletedByUserId = techId, var woItemTask = new WorkOrderItemTask()
Task = "Dis-assemble", {
Sequence = 1, CompletedByUserId = techId,
Status = WorkOrderItemTaskCompletionType.Complete, Task = "Dis-assemble",
CompletedDate = woDate.AddHours(1) Sequence = 1,
}; Status = WorkOrderItemTaskCompletionType.Complete,
woItem.Tasks.Add(woItemTask); CompletedDate = woDate.AddHours(1)
};
woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask() woItemTask = new WorkOrderItemTask()
{ {
CompletedByUserId = techId, CompletedByUserId = techId,
Task = "Lubricate", Task = "Lubricate",
Sequence = 2, Sequence = 2,
Status = WorkOrderItemTaskCompletionType.NotApplicable, Status = WorkOrderItemTaskCompletionType.NotApplicable,
CompletedDate = woDate.AddHours(1) CompletedDate = woDate.AddHours(1)
}; };
woItem.Tasks.Add(woItemTask); woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask() woItemTask = new WorkOrderItemTask()
{ {
CompletedByUserId = techId, CompletedByUserId = techId,
Task = "Repair", Task = "Repair",
Sequence = 3, Sequence = 3,
Status = WorkOrderItemTaskCompletionType.Complete, Status = WorkOrderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(1.5) CompletedDate = woDate.AddHours(1.5)
}; };
woItem.Tasks.Add(woItemTask); woItem.Tasks.Add(woItemTask);
woItemTask = new WorkOrderItemTask() woItemTask = new WorkOrderItemTask()
{ {
CompletedByUserId = techId, CompletedByUserId = techId,
Task = "Re-assemble", Task = "Re-assemble",
Sequence = 4, Sequence = 4,
Status = WorkOrderItemTaskCompletionType.Complete, Status = WorkOrderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(2) CompletedDate = woDate.AddHours(2)
}; };
woItem.Tasks.Add(woItemTask); 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);
woItemTask = new WorkOrderItemTask()
{
CompletedByUserId = techId,
Task = "Test and confirm repair",
Sequence = 5,
Status = WorkOrderItemTaskCompletionType.Complete,
CompletedDate = woDate.AddHours(2)
};
woItem.Tasks.Add(woItemTask);
}
//EXPENSES //EXPENSES
var cost = Fake.Random.Decimal(1, 10); if (Fake.Random.Int(1, 4) == 2)//25% chance
var woItemExpense = new WorkOrderItemExpense()
{ {
UserId = RandomServiceTechUserId(), var cost = Fake.Random.Decimal(1, 10);
//TotalCost = cost, var woItemExpense = new WorkOrderItemExpense()
ChargeAmount = cost * 1.2m, {
ChargeToCustomer = true, UserId = RandomServiceTechUserId(),
ReimburseUser = true, //TotalCost = cost,
ChargeTaxCodeId = TCGoods, ChargeAmount = cost * 1.2m,
Name = Fake.Commerce.ProductName() ChargeToCustomer = true,
ReimburseUser = true,
ChargeTaxCodeId = TCGoods,
Name = Fake.Commerce.ProductName()
}; };
woItem.Expenses.Add(woItemExpense); woItem.Expenses.Add(woItemExpense);
woItemExpense = new WorkOrderItemExpense() woItemExpense = new WorkOrderItemExpense()
{ {
UserId = RandomServiceTechUserId(), UserId = RandomServiceTechUserId(),
// TotalCost = cost * 2m, // TotalCost = cost * 2m,
ChargeAmount = cost * 2.2m, ChargeAmount = cost * 2.2m,
ChargeToCustomer = true, ChargeToCustomer = true,
ReimburseUser = true, ReimburseUser = true,
ChargeTaxCodeId = TCGoods, ChargeTaxCodeId = TCGoods,
Name = Fake.Commerce.ProductName() Name = Fake.Commerce.ProductName()
}; };
woItem.Expenses.Add(woItemExpense); woItem.Expenses.Add(woItemExpense);
}
//OUTSIDE SERVICES //OUTSIDE SERVICES
var ShippingCost = Fake.Random.Decimal(5, 20); if (Fake.Random.Int(1, 10) == 2)//10% chance
var RepairCost = Fake.Random.Decimal(50, 1000);
var woItemOutsideService = new WorkOrderItemOutsideService()
{ {
UnitId = GetRandomUnitForCustomer(o.CustomerId), var ShippingCost = Fake.Random.Decimal(5, 20);
Notes = Fake.Lorem.Sentence(), var RepairCost = Fake.Random.Decimal(50, 1000);
VendorSentToId = Fake.Random.Long(1, TotalSeededVendors), var woItemOutsideService = new WorkOrderItemOutsideService()
VendorSentViaId = Fake.Random.Long(1, TotalSeededVendors), {
RMANumber = "RMA" + Fake.Finance.Account(6), UnitId = GetRandomUnitForCustomer(o.CustomerId),
TrackingNumber = "TR" + Fake.Finance.Account(8), Notes = Fake.Lorem.Sentence(),
RepairCost = RepairCost, VendorSentToId = Fake.Random.Long(1, TotalSeededVendors),
RepairPrice = RepairCost * 1.5m, VendorSentViaId = Fake.Random.Long(1, TotalSeededVendors),
ShippingCost = ShippingCost, RMANumber = "RMA" + Fake.Finance.Account(6),
ShippingPrice = ShippingCost * 1.5m, TrackingNumber = "TR" + Fake.Finance.Account(8),
SentDate = woDate, RepairCost = RepairCost,
ETADate = woDate.AddDays(7), RepairPrice = RepairCost * 1.5m,
ReturnDate = woDate.AddDays(8), ShippingCost = ShippingCost,
TaxCodeId = 1 ShippingPrice = ShippingCost * 1.5m,
}; SentDate = woDate,
woItem.OutsideServices.Add(woItemOutsideService); ETADate = woDate.AddDays(7),
ReturnDate = woDate.AddDays(8),
ShippingCost = Fake.Random.Decimal(5, 20); TaxCodeId = 1
RepairCost = Fake.Random.Decimal(50, 1000); };
woItemOutsideService = new WorkOrderItemOutsideService() woItem.OutsideServices.Add(woItemOutsideService);
{ }
UnitId = GetRandomUnitForCustomer(o.CustomerId), // ShippingCost = Fake.Random.Decimal(5, 20);
Notes = Fake.Lorem.Sentence(), // RepairCost = Fake.Random.Decimal(50, 1000);
VendorSentToId = Fake.Random.Long(1, TotalSeededVendors), // woItemOutsideService = new WorkOrderItemOutsideService()
VendorSentViaId = Fake.Random.Long(1, TotalSeededVendors), // {
RMANumber = "RMA" + Fake.Finance.Account(6), // UnitId = GetRandomUnitForCustomer(o.CustomerId),
TrackingNumber = "TR" + Fake.Finance.Account(8), // Notes = Fake.Lorem.Sentence(),
RepairCost = RepairCost, // VendorSentToId = Fake.Random.Long(1, TotalSeededVendors),
RepairPrice = RepairCost * 1.5m, // VendorSentViaId = Fake.Random.Long(1, TotalSeededVendors),
ShippingCost = ShippingCost, // RMANumber = "RMA" + Fake.Finance.Account(6),
ShippingPrice = ShippingCost * 1.5m, // TrackingNumber = "TR" + Fake.Finance.Account(8),
SentDate = woDate, // RepairCost = RepairCost,
ETADate = woDate.AddDays(7), // RepairPrice = RepairCost * 1.5m,
ReturnDate = woDate.AddDays(8), // ShippingCost = ShippingCost,
TaxCodeId = 1 // ShippingPrice = ShippingCost * 1.5m,
}; // SentDate = woDate,
woItem.OutsideServices.Add(woItemOutsideService); // ETADate = woDate.AddDays(7),
// ReturnDate = woDate.AddDays(8),
// TaxCodeId = 1
// };
// woItem.OutsideServices.Add(woItemOutsideService);
o.Items.Add(woItem); o.Items.Add(woItem);
} }
//sample status changes //sample status changes
if (Fake.Random.Int(1, 4) == 2)//25% chance
{ {
var WoState = new WorkOrderState()
{ {
WorkOrderStatusId = (long)SeedWOStatus.NeedsToBeAssigned, var WoState = new WorkOrderState()
UserId = RandomServiceTechUserId(), {
Created = ((DateTime)o.ServiceDate).AddMinutes(5) WorkOrderStatusId = (long)SeedWOStatus.NeedsToBeAssigned,
}; UserId = RandomServiceTechUserId(),
o.States.Add(WoState); Created = ((DateTime)o.ServiceDate).AddMinutes(5)
};
o.States.Add(WoState);
}
} }
if (Fake.Random.Int(1, 4) == 2)//25% chance
{ {
var WoState = new WorkOrderState()
{ {
WorkOrderStatusId = (long)SeedWOStatus.Scheduled, var WoState = new WorkOrderState()
UserId = RandomServiceTechUserId(), {
Created = ((DateTime)o.ServiceDate).AddHours(1) WorkOrderStatusId = (long)SeedWOStatus.Scheduled,
}; UserId = RandomServiceTechUserId(),
o.States.Add(WoState); Created = ((DateTime)o.ServiceDate).AddHours(1)
};
o.States.Add(WoState);
}
} }
if (Fake.Random.Int(1, 4) == 2)//25% chance
{ {
var WoState = new WorkOrderState()
{ {
WorkOrderStatusId = (long)SeedWOStatus.ManagerApprovalRequired, var WoState = new WorkOrderState()
UserId = RandomServiceTechUserId(), {
Created = ((DateTime)o.ServiceDate).AddHours(1).AddMinutes(5) WorkOrderStatusId = (long)SeedWOStatus.ManagerApprovalRequired,
}; UserId = RandomServiceTechUserId(),
o.States.Add(WoState); Created = ((DateTime)o.ServiceDate).AddHours(1).AddMinutes(5)
};
o.States.Add(WoState);
}
} }
if (Fake.Random.Int(1, 4) == 2)//25% chance
{ {
var WoState = new WorkOrderState()
{ {
WorkOrderStatusId = (long)SeedWOStatus.Scheduled, var WoState = new WorkOrderState()
UserId = RandomServiceTechUserId(), {
Created = ((DateTime)o.ServiceDate).AddHours(2) WorkOrderStatusId = (long)SeedWOStatus.Scheduled,
}; UserId = RandomServiceTechUserId(),
o.States.Add(WoState); Created = ((DateTime)o.ServiceDate).AddHours(2)
o.LastStatusId = WoState.WorkOrderStatusId; };
o.States.Add(WoState);
o.LastStatusId = WoState.WorkOrderStatusId;
}
} }
//All wo ending status
//if it's in the past tag it with a completed type status //if it's in the past tag it with a completed type status
if (isPast) if (isPast)
{ {